Generic Logging 和 Specific Logging(使用 NLOG),Duplication of Logging

Generic Logging and Specific Logging (using NLOG), Duplication of Logging

我正在尝试创建 2 个记录器(使用 NLog)

  1. 首先记录器记录所有需要的项目以登录解决方案
  2. 另一个跟踪特定项目(我这样做是为了保持事情的清晰和重点,这里只 运行 trace

配置如下

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
  <target name="logfile"
          xsi:type="File"
          layout="${longdate} ${level} ${threadid} ${callsite} ${message}"
          fileName="${basedir}\Logs\GatewayApplicationDebugAndErrorLog.txt"
          archiveNumbering="Rolling"
          maxArchiveFiles="10"
          archiveAboveSize="10000000"/>     
  <target name="J1939Trace"
          xsi:type="File"
          layout="${longdate} ${level} ${threadid} ${callsite} ${message}"
          fileName="${basedir}\Logs\J1939Trace.txt"
          archiveNumbering="Rolling"
          maxArchiveFiles="10"
          archiveAboveSize="10000000"/>
</targets>
<rules>
  <logger name="*" minlevel="Trace" writeTo="logfile" />
  <logger name="J1939Trace" maxlevel="Trace" writeTo="J1939Trace" final="true" />
</rules>

用法如下所示

private readonly Logger logger = LogManager.GetCurrentClassLogger(); // Generic Logger
private readonly Logger j1939Logger = LogManager.GetLogger("J1939Trace"); // Specific Logger.

我观察到特定记录器项也记录在通用日志项中,我不希望出现重复。任何想法我做错了什么?

这行得通吗?

发件人:NLog: How to exclude specific loggers from a specific rule?

添加 final="true" 意味着不再对 "SpammyLogger" 产生的事件执行更多规则,但它仅适用于指定级别。(参见 https://github.com/nlog/nlog/wiki/Configuration-file#rules

确保通读答案中的所有评论。