log4net的多个附加目的地,写入事件查看器 [英] log4net multiple appenders, writing to event viewer

查看:162
本文介绍了log4net的多个附加目的地,写入事件查看器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用记录log4net的

,我有两个附加目的地一个文件和其他事件日志的appender。我有登记在注册表编辑器应用程序,问题是现在都记录在事件查看器中编写。我需要 fileAppender 文件和 eventLogAppender 在事件查看器中显示。



<预类=郎咸平的XML prettyprint-覆盖> <&log4net的GT;
<追加程序名称=LogFileAppenderTYPE =log4net.Appender.FileAppender>
<文件值=file.log/>
< appendToFile值=FALSE/>
<布局类型=log4net.Layout.PatternLayout>
<标头值=记录开始和放大器; #xD;&安培; #xA;/>
<页脚值=记录完&安培; #xD;&安培; #xA;/>
< conversionPattern值=%DATE [%线程]%-5level%记录:%讯息%换行/>
< /布局>
< /附加器>

<追加程序名称=EventLogAppenderTYPE =log4net.Appender.EventLogAppender>

< PARAM NAME =应用程序名称值=事件日志/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%DATE [%线程]%-5level%记录仪 - 消息%换行符%/>
< /布局>
< /附加器>

<根和GT;
<电平值=DEBUG/>
<附加目的地-REF REF =LogFileAppender/>
<附加目的地-REF REF =EventLogAppender/>
< /根>
< / log4net的>



,然后在代码



 私有静态只读的ILog日志= LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod()DeclaringType); 
//私有静态只读的ILog日志= LogManager.GetLogger(LogFileAppender);
私人静态只读的ILog LOGEVENTS = LogManager.GetLogger(EventLogAppender);



我曾尝试不同的东西,但没有人工作,任何解决方案?



谢谢!


解决方案

为了使用多个ILog的实例与log4net的,并记录不同的信息来。每次,你必须配置你的配置文件的log4net的部分至少两个记录器元素



在你的情况,你有你想要两个目标 - 文件和事件日志。我会打电话给他们FileLogger和事件记录



下面是额外的配置您在log4net的部分需要的一个例子:



<预类=郎咸平的XML prettyprint-覆盖> <记录器名称=FileLogger>
<电平值=ALL/>
<附加目的地-REF REF =LogFileAppender/>
< /记录器>

<记录器名称=事件记录>
<电平值=ALL/>
<附加目的地-REF REF =EventLogAppender/>
< /记录器>



然后,使用每一个代码,实例化它们像这样:

 私有静态只读的ILog fileLogger = LogManager.GetLogger(FileLogger); 
私人静态只读ILog的事件记录= LogManager.GetLogger(事件记录);

请注意,该附加器元素的ref属性相匹配,你已经配置了追加程序的名称,属性,传递给GetLogger名字记录器元素的name属性相匹配。


I am using log4net for logging, I have two appenders one file and other 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.

<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.

In your case, you have two targets that you want - file and event log. I'll call them FileLogger and EventLogger.

Here is an example of the additional configuration you need in the log4net section:

<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.

这篇关于log4net的多个附加目的地,写入事件查看器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆