配置log4net以允许存储每个dll的日志

时间:2014-10-01 03:16:27

标签: c# log4net

我想将log4net配置为每个dll都有多个文件和每个文件存储...

我该如何配置?

<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="logs/mylog.log"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <maximumFileSize value="10MB"/>
  <staticLogFileName value="true"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss.fff},[%thread],%-5level,%logger,[%ndc],%message%newline"/>
  </layout>
</appender>
 <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
  <mapping>
    <level value="ERROR"/>
    <foreColor value="Red"/>
  </mapping>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss.fff} [%thread] %-5level %logger - %message%newline"/>
  </layout>
</appender>
<root>
  <level value="INFO"/>
  <appender-ref ref="FileAppender"/>
  <appender-ref ref="ColoredConsoleAppender"/>
</root>
</log4net>

我们说我有3个dll,Test.Scan.dll,Test.Warn.dll和Test.Processor.dll。我应该配置为dll名称还是命名空间?

我知道有&#34;过滤器&#34; in&#34; appender&#34;水平。但是我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

如果使用标准记录器命名约定,则不需要使用过滤器:记录器的名称。只需添加以您想要使用的公共根命名的记录器,并在这些记录器中设置不同的appender

<appender name="FileAppender.Test.Scan" type="log4net.Appender.RollingFileAppender">
    ...
</appender>

<appender name="FileAppender.Test.Warn" type="log4net.Appender.RollingFileAppender">
    ...
</appender>

<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    ...
</appender>

<!-- Set root logger level to DEBUG and its only appender to A1 -->
<root>
    <level value="DEBUG" />
    <appender-ref ref="ColoredConsoleAppender" />
</root>

<logger name="Test.Scan">
    <level value="INFO" />
    <appender-ref ref="FileAppender.Test.Scan" />
</logger>

<logger name="Test.Warn">
    <level value="INFO" />
    <appender-ref ref="FileAppender.Test.Warn" />
</logger>

名称以Test.Warn开头的记录器将选择<logger name="Test.Warn">配置节点appender。当然,如果你有一个名为&#34;测试&#34;其配置将应用于名称以&#34; Test&#34;

开头的所有记录器