2012-02-01 78 views
0

我正在創建一個使用.Net加載項框架的加載項的應用程序。我想使用log4net跟蹤加載項內容,但是我無法獲取記錄的數據以寫入輸出文件。我在主機上成功使用log4net。.net加載項框架在加載項中使用log4net

在我的加載項的AssemblyInfo.cs中我已經添加了這行代碼:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

這應該告訴log4net的獲得來自config文件的配置。

我對外接的app.config看起來是這樣的:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.diagnostics> 
    <trace autoflush="true" indentsize="4"> 
     <listeners> 
     <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="UpdateModuleLog.log" /> 
     <remove name="Default" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
    <log4net> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern 
      value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="TraceAppender"/> 
    </root> 
    </log4net> 
</configuration> 

的加載項的App.config中被轉移到管道預期。

在我的插件,我有以下代碼來實例化log4net的:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger 
     (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

最後,我叫log4net的在我的代碼是這樣的:

 log.InfoFormat("Starting Update Module Version 1.0.0 for Internationalization Database."); 

的問題是,UpdateModuleLog.log是從未創建。我希望它可以在主機應用程序的bin文件夾或管道中的加載項文件夾中創建,但它不在任何位置。我正在使用TraceAppender,因爲我想將任何寫入調試或跟蹤的任何內容記錄到同一個文件中,但是如果這需要寫入單獨的文件,那就這麼做吧。

此外,主機進程的日誌文件並不反映從加載宏完成的任何日誌記錄。

回答

0

找到了答案。我的app.config缺少這段代碼:

<configSections> 
    <section name="log4net" 
     type="log4net.Config.Log4NetConfigurationSectionHandler, 
      log4net"/> 
    </configSections>