簡體   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