【问题标题】:log4net does not log for a class library that is created using .net 4.0log4net 不记录使用 .net 4.0 创建的类库
【发布时间】:2013-08-23 14:59:26
【问题描述】:

我正在为 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”处创建任何日志。我有点困惑。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: .net logging log4net log4net-configuration


    【解决方案1】:

    非常感谢大家的回复

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      当你作为webapplication运行时,需要检查app pool用户对D:\Temp\路径的访问权限(完全访问)。

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

      log4net.Config.XmlConfigurator.Configure();
      

      【讨论】:

      • 我将代码添加到 app.config 并检查了 (带有双斜杠和单斜杠)。在这两种情况下,它都不起作用。我在 assemblyinfo.cs 文件中添加了这个 [assembly: log4net.Config.XmlConfigurator(Watch = true)]
      • 我发现这是由于 Internet Explorer 在保护模式下运行所致。所以我的插件无法将任何内容写入磁盘。有没有办法绕过这个。提前致谢
      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      相关资源
      最近更新 更多