2011-05-27 68 views
2

在我的VS2010的解決方案我有這樣的情況:log4net的問題

  • 網站
  • 分享幫助
  • Library2

上的global.asax.cs我初始化log4net的配置使用:

private static log4net.ILog _logger = log4net.LogManager.GetLogger("globalASAX"); 

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    log4net.Config.XmlConfigurator.Configure(); 
    _logger.Info("[APPLICATION START] " + DateTime.Now.ToString()); 
} 

它窩rks正常並且應用程序啓動消息在log.txt文件中可用。當我嘗試在DLL Library1或Library2上的可用類上使用日誌時,會發生問題。

我添加的行:

private static log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(ImageRepository)); 

,但是當我嘗試所有的_logger.error(「布拉布拉」)沒有發生在日誌文件; _logger的所有屬性均爲false(即isdebugenable = false)。我該如何解決這個問題?我跟着可用的指令位置:

http://logging.apache.org/log4net/release/manual/configuration.html

的log4net的配置下web.config文件:

<log4net> 
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString"> 
      <conversionPattern value="log\explorer-log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log"/> 
     </file> 
     <appendToFile value="true"/> 
     <maximumFileSize value="1024KB"/> 
     <maxSizeRollBackups value="5"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %level %logger - %message%newline"/> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="RollingFile"/> 
    </root> 
</log4net> 

任何人都可以幫我嗎? 感謝, 安德烈

+0

什麼是您的log4net的配置是什麼樣子? – 2011-05-27 15:51:07

+0

是否有可能當配置標籤位於web.config文件而不是單獨的文件時發生此問題? – 2011-05-27 16:20:29

+0

如果我從網站寫入日誌(我稱之爲XmlConfigurator.Configure()),但能夠在同一解決方案下從另一個項目調用時不起作用,則可以寫入日誌 – 2011-05-30 08:44:45

回答

1

我懷疑的log4net找不到你型ImageRepository記錄器。作爲一個快速檢查創建一個命名記錄器,並嘗試調用它。

private static log4net.ILog _logger = log4net.LogManager.GetLogger("FooLog"); 

和配置

<root> 
    <level value="DEBUG"/> 
    <appender-ref ref="RollingFile"/> 
</root> 
<logger name="FooLog"> 
    <level value="DEBUG"/> 
    <appender-ref ref="RollingFile"/> 
</logger> 
+0

如果我從網站(我稱之爲XmlConfigurator.Configure(),但不起作用,如果我從同一解決方案下的另一個項目調用 – 2011-05-30 08:45:40

+0

@Andrea我看到了,正如你所說的,你將log4net配置存儲在與項目相同的配置中。 config),這就是爲什麼你可能會遇到這個問題:配置文件不一定是從同一個項目中獲取的(例如,對於dll項目)作爲解決方案:嘗試將log4net config移動到單獨的文件並加載該文件。它被複制到您使用它的項目的Bin文件夾中。這將解決你的問題。 – oleksii 2011-05-30 09:27:06

+0

我解決了將_logger對象傳遞給外部類的構造函數的問題。它工作正常,我知道它可能不是一個好的解決方案 – 2011-05-30 17:32:57

0

理論上這應該工作(我敢肯定你知道)。但是,通常情況下,有兩個方面需要檢查什麼時候沒有記錄任何文件。我會檢查的第一個區域是文件appender本身。文本文件可能被鎖定,這可能導致郵件丟失。我要檢查的另一件事是確保log4net在庫中正確初始化。它應該是,但它並沒有傷害檢查。如果這些解決方案都不能解決問題,請嘗試開啓log4net本身的調試功能,以查看即將發生的錯誤消息。這裏是您展示如何打開這些郵件的鏈接:

http://haacked.com/archive/2006/09/27/Log4Net_Troubleshooting.aspx

+0

如果我從網站寫入,我可以寫日誌(我稱之爲XmlConfigurator.Configure(),但不起作用,如果我在同一個解決方案下從另一個項目調用 – 2011-05-30 08:44:24

+1

@Andrea Girardi - 理解。但是,該網站可能會鎖定文本文件,或者您不是在你的庫中正確地初始化log4net,首先通過寫入控制檯來檢查第一個,如果在你的庫中有效,那麼問題就在於鎖定文件,如果它不起作用,請確保你實際上正在初始化log4net如果兩者都不起作用,請打開log4net本身的調試以查看問題出在哪裏。 – IAmTimCorey 2011-05-30 19:20:00