简体   繁体   English

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

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

We are using Log4Net version 2.0.8 for logging, and it is configured to log into files.我们使用 Log4Net 2.0.8 版进行日志记录,它被配置为登录文件。 RollingFileAppender is configured as appender. RollingFileAppender 被配置为 appender。 It loggs events perfectly into files, but we found that it loggs into Windows Event Log as well.它将事件完美地记录到文件中,但我们发现它也记录到 Windows 事件日志中。 We are wondering is it possible somehow to turn off logging to Windows Event log我们想知道是否有可能以某种方式关闭对 Windows 事件日志的日志记录

在此处输入图像描述

Below is the configuration of Log4Net下面是Log4Net的配置

.net 4.7.1 is the version. .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>

Thank you!谢谢!

We found answer to question and are recognizing that the question is incorrect.我们找到了问题的答案,并认识到该问题是不正确的。 So we have the wrapper for loggers encapsulated in nuget package, which wraps log4net and handwritten "EventLogLogger"因此,我们将记录器的包装器封装在 nuget package 中,它包装了 log4net 和手写的“EventLogLogger”

The client code in the wrapper is looks like包装器中的客户端代码看起来像

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

So sorry for bothering all attendees, the Log4Net is not the one behind this.很抱歉打扰所有与会者,Log4Net 不是这背后的人。

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

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