繁体   English   中英

使用log4net,您是否指定要使用的附加程序?

[英]With log4net, do you specify which appender to use?

当您有2个附加程序时,在代码中说一个针对调试错误,一个对产品错误,您是否在代码中显式创建2个日志类,或者一个附加程序基本上是要编写满足特定条件的任何日志消息?

因此,在您的代码中,您使用单个日志方法,并且根据您的附加程序的设置方式,如果消息是从特定名称空间记录的,或者是特定日志级别的,则它将记录消息。

因此,可能将单个日志条目写入2个日志文件吗?

是的,您可以将单个日志语句发布到多个追加程序。 只要符合每个条件,它将使用每个附加程序。

例如,使用此配置部分,它将所有消息记录到文件,还将警告和错误记录到事件查看器。

 <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\logs\MySite"/>
      <appendToFile value="true"/>
      <datePattern value=".yyyy-MM-dd.\l\o\g"/>
      <rollingStyle value="Date"/>
      <MaxSizeRollBackups value="14"/>
      <param name="StaticLogFileName" value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%thread] %-5level %logger{1} - %m%n"/>
      </layout>
    </appender>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <applicationName value="Trading.Web"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%thread] %-5level %logger{1} - %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="WARN"/>
        <param name="LevelMax" value="ERROR"/>
      </filter>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender"/>
      <appender-ref ref="EventLogAppender" />
    </root>
  </log4net>

所以这:

  _log.Debug("This is a debug message");

仅会出现在日志文件中(因为它不符合事件日志附加程序的过滤条件)。

但是这个:

  _log.Error("This is an error message.");

将记录到日志文件和事件查看器。

更新 :关于您的过滤问题,如果您有:

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

<!-- Print only messages of level WARN or above in the namespace Com.Foo -->
<logger name="Com.Foo">
    <level value="WARN" />
</logger>

然后,如果WARN或更高版本,Com.Foo下的所有内容都将记录,但其他所有内容将记录DEBUG或更高版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM