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

C# 配置log4net以允许存储每个dll的日志,c#,log4net,C#,Log4net,我想配置log4net有多个文件,每个文件存储每个dll 我如何配置它 <log4net> <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logs/mylog.log"/> <appendToFile value="true"/> <rollingStyle value="Size"/> &l

我想配置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名称还是名称空间


我知道在“appender”级别中有“filter”。但是我应该怎么做呢?

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

<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开头的记录器将选择配置节点appender。当然,如果您有一个名为“Test”的记录器,它的配置将应用于名称以“Test”开头的所有记录器