运行在发布模式下构建的.Net 4.0 Windows应用程序时,log4net不会记录

Dee*_*epu 6 log4net .net-4.0

我有一个使用log4net的.Net 4.0 Windows服务应用程序.

这是我的log4net配置.

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
    </layout>
  </appender>

  <appender name="ColorConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
      <level value="ERROR" />
      <foreColor value="Red, HighIntensity" />
    </mapping>
    <mapping>
      <level value="FATAL" />
      <foreColor value="Red, HighIntensity" />
    </mapping>
    <mapping>
      <level value="WARN" />
      <foreColor value="Blue, HighIntensity" />
    </mapping>
    <mapping>
      <level value="INFO" />
      <forecolor value="White, HighIntensity" />
    </mapping>
    <mapping>
      <level value="DEBUG" />
      <forecolor value="Green, HighIntensity" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <file value="Logs/Server.log" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
    </layout>
    <maximumFileSize value="10MB" />
    <rollingStyle value="Composite" />
    <staticLogFileName value="true" />
  </appender>

  <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
    <appender-ref ref="ColorConsoleAppender" />
    <appender-ref ref="RollingFileAppender" />
  </root>

</log4net>
Run Code Online (Sandbox Code Playgroud)

当使用在调试模式下构建的exe(日志文件在正确的文件路径中创建)启动服务时,日志记录按预期工作,但在使用内置于发布模式的exe时不起作用.

我已尝试按照此博客中提到的步骤使用重新编译的log4net dll for .Net 4.0 .. http://tseonet.blogspot.com/2010/07/making-log4net-run-on-net-40.html.

但是,这也没有用.

任何帮助是极大的赞赏.

Ste*_*gli 8

我建议打开内部调试,如下所述:

log4net - Aplder在IIS7.5中不起作用

  • 我可以看到log4net使用类型[log4net.Repository.Hierarchy.Hierarchy]创建默认存储库[log4net-default-repository],然后尝试使用配置配置存储库(如果程序集使用属性[assembly:log4net]进行修饰. Config.XmlConfigurator(Watch = true)].如果应用程序在发布模式下构建,则log4net无法找到配置,因为加载的程序集未使用此属性进行修饰.将此属性添加到AssemblyInfo文件解决了该问题. (3认同)