2014-01-16 158 views
18

我在配置了log4net但未創建日誌文件的程序上收到錯誤消息。我確定日誌記錄是在程序中設置的,因爲其他用戶已經從相同的創建日誌文件,使用相同的配置文件我下面發佈(除了文件路徑)。我確定我有寫入權限的路徑。在程序失敗的地方,它絕對必須通過日誌的初始化。Log4net未創建日誌文件

在這個配置文件中看起來有什麼錯誤,或者有任何人遇到類似的問題,並知道我應該在程序中尋找的東西我試圖從中獲取日誌?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="AutoTag" type="System.Configuration.NameValueSectionHandler"/> 
    <section name="WindwardReports" type="System.Configuration.NameValueSectionHandler"/> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/> 
    </configSections> 

    <AutoTag> 
    <add key="_debug" value="true"/> 
    </AutoTag> 

    <WindwardReports> 
    <add key="line.break" value="internal"/> 
    </WindwardReports> 

    <appSettings> 
    <add key="sql.timeout" value="240"/> 
    </appSettings> 

    <log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 

     <param name="File" value="C:\Users\loganm\Documents\Catapult.log"/> 

     <param name="AppendToFile" value="true"/> 
     <param name="MaxSizeRollBackups" value="2"/> 
     <param name="MaximumFileSize" value="100KB"/> 
     <param name="RollingStyle" value="Size"/> 
     <param name="StaticLogFileName" value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/> 
     </layout> 
    </appender> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    </log4net> 
</configuration> 

回答

35

給下面的代碼在你的應用程序,你把你的日誌代碼之前:

log4net.Config.XmlConfigurator.Configure(); 

您可以在Global.asax中定義它:

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 

    // Initialize log4net. 
    log4net.Config.XmlConfigurator.Configure(); 
} 

您還可以添加以下行凱文建議(或者提及您的配置文件名或不):

[assembly: log4net.Config.XmlConfigurator] 

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)] 

希望它有幫助!

5

這裏有一些可能的事情要考慮:

  1. 也許你正在使用不同的log4net的DLL版本比你的同事嗎?嘗試從配置部分移除版本和公鑰信息,即縮短到:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
    
  2. 嘗試更改文件名使用逃回斜線,即「C:\\ \\用戶loganm \ ... 」。或者,您可以嘗試使用正斜槓:「C:/ Users/loganm/...」

  3. 如果您在運行程序之前重新編譯程序,請確保您實際上使用的是與您的同事相同的AssemblyInfo.cs 。一個常見的錯誤是忽略在那裏初始化記錄器。它應該有這樣的事情在底部:

    // log4net的激活
    [裝配:log4net.Config.XmlConfigurator]

+1

這是一個完美的解決方案。 –

-2

我發現這個問題了,可惜它只是記錄了沒有實際上已經在程序中設置了,並且我得到了不正確的信息。

+0

請將此作爲評論,而不是答案。 – granadaCoder

3

確保log4net.config文件複製到輸出目錄屬性不是「不要複製」。

其實最好的解決辦法是增加

<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

跟蹤什麼在背面去。它會幫助你發現問題。

+0

log4net的內部日誌打印在'輸出'窗口中。 – matrix