我想将 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”。但是我应该怎么做呢?
最佳答案
如果您使用标准记录器命名约定,则无需使用过滤器:记录器的名称。只需添加以您要使用的公共(public)根命名的记录器,并在这些记录器中设置不同的附加程序
<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">
配置节点附加程序。当然,如果你有一个名为“Test”的记录器,它的配置将应用于名称以“Test”开头的所有记录器
关于c# - 配置 log4net 以允许存储每个 dll 的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133561/