特定类型应将消息写入单独的日志文件中

a specific type should write messages in a separate logfile

提问人:BennoDual 提问时间:10/11/2023 最后编辑:Mark SchultheissBennoDual 更新时间:10/11/2023 访问量:31

问:

我对 log4net 使用以下配置:

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingFileAppender" />
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logs\WebPortal.API.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <threshold value="ALL" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger{2} - %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>

我现在可以得到一个这样的记录器并使用它:

static readonly ILog log = LogManager.GetLogger(typeof(OperationsPlanningService));

现在,我想在单独的日志文件中写入一种特定类型的日志记录。当我使用这样的记录器创建记录器时:typeof(ExceptionHandlingMiddleware)

static readonly ILog log = LogManager.GetLogger(typeof(ExceptionHandlingMiddleware));

来自此记录器的消息应写入 logs\WebPortal.ExceptionHandlingMiddleware.log

log4net 可以做到这一点吗?

C# 日志记录 log4net

评论


答:

1赞 Klaus Gütter 10/11/2023 #1

您可以为特定记录器添加特定配置,就像在 XML 中为根记录器添加特定配置一样,例如:

<logger name="MyLoggerName">
    <level value="WARN" />
    <appender-ref ref="MyAppender" />
</logger>

MyLoggerName 可以是完整的记录器名称,也可以只是命名空间,甚至是命名空间的一部分(log4net 记录器形成层次结构)。