.net 4.0 log4net不';在发布模式下运行.Net 4.0 Windows应用程序时,不要记录日志

.net 4.0 log4net不';在发布模式下运行.Net 4.0 Windows应用程序时,不要记录日志,.net-4.0,log4net,.net 4.0,Log4net,我有一个使用log4net的.net4.0windows服务应用程序 这是我的log4net配置 <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%threa

我有一个使用log4net的.net4.0windows服务应用程序

这是我的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>

但是,这也不起作用


非常感谢您的帮助。

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

谢谢迪普


将[assembly:log4net.Config.XmlConfigurator(Watch=true)]添加到assemblyInfo文件对我很有效

今天我偶然发现了同样的问题,在完成了以下操作后,它对我很有效

log4net.Config.XmlConfigurator.Configure();
我觉得值得分享。下面是使用log4net作为提供程序的logger类

/// <summary>
/// Logger class using log4net library
/// </summary>
public class Log4NetLogger : ILogger
{
    public Log4NetLogger(Type configType)
    {
        log4net.Config.XmlConfigurator.Configure();
        this._logger = LogManager.GetLogger(configType);
    }

}
//
///使用log4net库的记录器类
/// 
公共类Log4NetLogger:ILogger
{
公共日志4NetLogger(类型configType)
{
log4net.Config.XmlConfigurator.Configure();
此._logger=LogManager.GetLogger(configType);
}
}

对于我来说,程序集属性不是一个选项,因为我将日志功能包装到一个单独的程序集中,其中log4net是其中一个提供程序。

非常感谢Stefan。这很有帮助。查看log4net调试消息,我可以看到存储库没有被配置,因为log4net找不到配置。在调试和发布模式中加载程序集的顺序不同。不确定这是否是问题所在。我可以看到log4net使用类型[log4net.repository.Hierarchy.Hierarchy]创建默认存储库[log4net default repository],然后尝试使用配置配置存储库(如果程序集使用属性[assembly:log4net.Config.XmlConfigurator(Watch=true)]。对于在发布模式中构建的应用程序,log4net找不到配置,因为加载的程序集没有使用此属性修饰。将此属性添加到AssemblyInfo文件解决了此问题。