0

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

我正在使用以下

  • .NET 4.0
  • 视觉工作室 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”处创建任何日志。我有点困惑。

任何帮助将不胜感激。

谢谢

4

2 回答 2

1

非常感谢所有的回复

问题在于 Internet Explorer 在保护模式下运行。以保护模式运行的 Internet Explorer 会限制插件向磁盘写入文件。

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

[assembly: log4net.Config.XmlConfigurator(ConfigFile =  "C:\\Program 
Files\\Temp\\app.config", Watch = true)]
于 2013-08-22T11:03:11.620 回答
0

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

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

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

如果您在组件中使用该属性,则无需调用:

log4net.Config.XmlConfigurator.Configure();
于 2013-08-21T20:58:08.680 回答