简体   繁体   English

log4net多个appender,写入事件查看器

[英]log4net multiple appenders, writing to event viewer

I am using log4net for logging, I have two appenders one file and other eventlog appender. 我使用log4net进行日志记录,我有两个appender一个文件和其他eventlog appender。 I have register application in registry editor, problem is now both logger are writing in event viewer. 我已在注册表编辑器中注册应用程序,问题是现在两个记录器都在事件查看器中编写。 I need fileAppender to write in file and eventLogAppender to be shown in event viewer. 我需要fileAppender写入文件和eventLogAppender才能在事件查看器中显示。

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="file.log"/>
  <appendToFile value="false"/>
  <layout type="log4net.Layout.PatternLayout">
    <header value="Logging Start &#xD;&#xA;"/>
    <footer value="Logging End &#xD;&#xA;"/>
    <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
  </layout>
</appender>

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">

  <param name="ApplicationName" value="eventlog" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG"/>
  <appender-ref ref="LogFileAppender"/>
  <appender-ref ref="EventLogAppender" />
</root>
</log4net>

and then in code 然后在代码中

private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog log = LogManager.GetLogger("LogFileAppender");
private static readonly ILog logEvents = LogManager.GetLogger("EventLogAppender");

I have tried different things but no one is working, any solution? 我尝试了不同的东西,但没有人工作,任何解决方案?

Thanks! 谢谢!

In order to use multiple ILog instances with log4net and to log different information to each, you must configure at least two Logger elements in the log4net section of your config file. 为了将多个ILog实例与log4net一起使用并将不同的信息记录到每个实例,您必须在配置文件的log4net部分中配置至少两个Logger元素。

In your case, you have two targets that you want - file and event log. 在您的情况下,您有两个目标 - 文件和事件日志。 I'll call them FileLogger and EventLogger. 我将它们称为FileLogger和EventLogger。

Here is an example of the additional configuration you need in the log4net section: 以下是log4net部分中所需的其他配置示例:

<logger name="FileLogger">
  <level value="ALL" />
  <appender-ref ref="LogFileAppender" />
</logger>

<logger name="EventLogger">
  <level value="ALL" />
  <appender-ref ref="EventLogAppender" />
</logger>

Then, to use each one in code, instantiate them like so: 然后,要在代码中使用每个代码,请将它们实例化为:

private static readonly ILog fileLogger = LogManager.GetLogger("FileLogger");
private static readonly ILog eventLogger = LogManager.GetLogger("EventLogger");

Note that the ref attribute of the appender elements matches the name attribute of the appenders you have already configured and that the name passed to GetLogger matches the name attribute of the logger elements. 请注意,appender元素的ref属性与您已配置的appender的name属性匹配,并且传递给GetLogger的名称与logger元素的name属性匹配。

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

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