log4net不记录使用.net 4.0创建的类库

时间:2013-08-21 09:42:40

标签: .net logging log4net log4net-configuration

我正在为Internet Explorer 9.0创建一个添加(类库(.dll))。并希望使用log4net dll进行日志记录。

我正在使用以下

  • .NET 4.0
  • Visual Studio 2010
  • log4net版本 - 1.2.11.0(适用于.Net 4.0)

我创建了一个app.config文件,这是我正在使用的配置,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net"  
        type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, 
        Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a"/>
    </configSections>

    <log4net>
        <appender name="RollingLogFileAppender" 
        type="log4net.Appender.RollingFileAppender">
           <param name="File" value="D:\\Temp\\Temp.log"/>
           <param name="AppendToFile" value="true"/>
           <param name="MaxSizeRollBackups" value="30"/>
           <param name="MaximumFileSize" value="10MB"/>
           <param name="RollingStyle" value="Date" />
           <param name="StaticLogFileName" value="true"/>
           <param name="DatePattern" value="yyyyMMdd" />
           <layout type="log4net.Layout.PatternLayout">
               <param name="Header" value="[Header]\r\n"/>
               <param name="Footer" value="[Footer]\r\n"/>
               <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - (%F:%L) 
               %m%n"/>
           </layout>
        </appender>
        <root>
           <level value="ALL"/>
           <appender-ref ref="RollingLogFileAppender"/>
        </root> 
    </log4net>
</configuration>

在AssemblyInfo.cs文件中添加了以下代码行

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

在DocumentComplete事件处理程序中添加了以下代码行。这会触发Internet Explorer页面加载。

log4net.Config.XmlConfigurator.Configure();

当我的添加功能启用并运行时。我在指定的路径“D:\ Temp \ Temp.log”中看不到任何日志。我有点困惑。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

非常感谢所有回复

问题在于Internet Explorer在受保护模式下运行。在受保护模式下运行的Internet Explorer会限制将附加文件写入磁盘。

我对配置做的另一项更改是将以下行添加到Assembly.cs文件

[assembly: log4net.Config.XmlConfigurator(ConfigFile =  "C:\\Program 
Files\\Temp\\app.config", Watch = true)]

答案 1 :(得分:0)

我猜你正在运行一个应用程序,那么你应该将你的代码添加到app app.config中。如果您使用的是Web应用程序,请将配置添加到web.config文件中。我还会检查并更改以下的双斜线:

 <param name="File" value="D:\Temp\Temp.log"/>

当您作为Web应用程序运行时,您需要检查应用程序池用户对D:\ Temp \ path(完全访问权限)的访问权限。

如果您在assambly中使用该属性,则无需致电:

log4net.Config.XmlConfigurator.Configure();