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

标签 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 名称还是命名空间?

我知道“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/

相关文章:

c# - SQL Server CE 3.5 重复行

c# - wpf中的进度条

c# - 如何将 JSON 对象作为参数从 Postman 传递到 ASP.NET WEB API

c# - 使用 as 运算符来构造对象

Log4Net:什么时候获取和释放文件句柄?

c# - Log4net appenders 总是空的

logging - 如何将 npgsql 日志输出重定向到 log4net 记录器?

c# - 无法从程序文件文件夹运行 ps1 脚本

.net - Azure Service Fabric 使用 log4net 将日志记录到 AppInsights 中

c# - Log4net 发布时不写入