繁体   English   中英

Log4Net。 限制 RollingFileAppender 在 Windows 事件查看器中记录事件

[英]Log4Net. Restrict RollingFileAppender to log events in Windows Event Viewer

我们使用 Log4Net 2.0.8 版进行日志记录,它被配置为登录文件。 RollingFileAppender 被配置为 appender。 它将事件完美地记录到文件中,但我们发现它也记录到 Windows 事件日志中。 我们想知道是否有可能以某种方式关闭对 Windows 事件日志的日志记录

在此处输入图像描述

下面是Log4Net的配置

.net 4.7.1 是版本。

<log4net>
  <root>
    <level value="ALL" />
  </root>
  <logger name="zzzzzz
    <level value="ALL" />
    <appender-ref ref="InfoAppender" />
    <appender-ref ref="DebugAppender" />
    <appender-ref ref="WarningAppender" />
    <appender-ref ref="ErrorAppender" />
  </logger>

  <logger name="NServiceBus">
    <level value="INFO" />
    <appender-ref ref="InfoAppender" />
    <appender-ref ref="DebugAppender" />
    <appender-ref ref="WarningAppender" />
    <appender-ref ref="ErrorAppender" />
  </logger>

  <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    <encoding value="utf-8" />
    <file value="C:\Logs\Product\\" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

    <rollingStyle value="Composite" />
    <datePattern value="yyyy-MM-dd\\\\'Product.Error.txt'" />
    <maximumFileSize value="5Mb" />
    <maxSizeRollBackups value="-1" />
    <!-- No limit on roll backs -->
    <staticLogFileName value="false" />
    <!-- Creates the folder for the day before logging for that day starts -->

    <layout type="zzzzz.MyOrders.Utilities.Logging.Log4Net.ExtendedPatternLayout, zzzzzz.MyOrders.Utilities.Logging">
      <conversionPattern value="Product.WebApi - %date [%thread] [%correlationId] %-5level - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ERROR" />
      <acceptOnMatch value="true" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
  </appender>
</log4net>

谢谢!

我们找到了问题的答案,并认识到该问题是不正确的。 因此,我们将记录器的包装器封装在 nuget package 中,它包装了 log4net 和手写的“EventLogLogger”

包装器中的客户端代码看起来像

    private void WriteLogMessageToLogs(LogMessageType logMessageType, LogMessage logMessage)
    {         
        foreach (var loggingProvider in this.loggingProviders)
        {
            loggingProvider.AddLogEntry(logMessage, logMessageType);
        }
    }

很抱歉打扰所有与会者,Log4Net 不是这背后的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM