.net - 如何阻止log4net写入两个单独的文件

标签 .net log4net log4net-configuration

我正在使用以下log4net配置。我正在尝试将性能日志写入单独的文件,但输出将同时发送到这两个文件。即使我正在指定:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger("PerformanceMetricsLogger");

在这种情况下,如何阻止log4net写入默认的附加程序?
<log4net>
  <!-- Define some output appenders -->
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">    
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="2000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFileAppenderForPerformance" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.peformance.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="2000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <!-- Setup the root category, add the appenders and set the default level -->
  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppender" />
  </root>

  <logger name="PerformanceMetricsLogger">
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppenderForPerformance" />
  </logger>
</log4net>

最佳答案

根目录下的所有记录器级别都继承了根记录器的附加程序。这就是为什么您的消息被记录两次的原因。要禁用记录器的继承,请将其additivity参数设置为false:

 <logger additivity="false" name="PerformanceMetricsLogger">
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppenderForPerformance" />
  </logger>

关于.net - 如何阻止log4net写入两个单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578786/

相关文章:

azure - 如何使用 Log4Net 将日志写入 Azure 网站中的 Blob

Log4net:记录器实例化

log4net - 如何在页眉/页脚中使用日期模式?

.net - 选择框中的选项显示在菜单顶部

c# - 将数组反序列化为复杂对象

unity-game-engine - 当 Unity 应用程序安装并在另一个系统中运行时,不会创建 Log4net 日志文件

c# - 在 RollingFileAppender 文件的文件名中添加日期

c# - 如何在 Silverlight RichTextControl 中启用制表符作为字符?

.net - .net 框架配置提供程序 (machineConfig64) 的版本在源 (2.0) 和目标 (4.0) 上不同

azure - Log4net.Azure 配置