内容简介:http://stackoverflow.com/questions/17106559/using-log4net-to-write-to-different-loggers
我正在使用log4net来做我的日志.
我想要它同时写入一个文件和事件日志.
由于某些原因,我在日志文件中发现两次.
这是我的app.config-section:
<log4net> <root> <level value="INFO" /> <appender-ref ref="LogFileAppender" /> <appender-ref ref="EventLogAppender" /> </root> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > <param name="File" value="c:\temp\DIS-logfile.txt" /> <param name="AppendToFile" value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date %-5level %logger - %message%newline" /> </layout> </appender> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> <param name="Indigo.DataIntakeService" value="eventlog" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %-5level %logger - %message%newline" /> </layout> </appender> </log4net>
在我的代码中,我需要如下:
private static readonly ILog Log = log4net.LogManager.GetLogger("DataIntakeService"); private static readonly ILog LogEvents = log4net.LogManager.GetLogger("EventLogAppender"); static void Main(string[] args) { log4net.Config.XmlConfigurator.Configure(); } public static void LogInfo(string message) { Log.Info(message); LogEvents.Info(message); }
它根据请求写入我的日志文件,但是消息也应该去我的eventviewer,而不会发生.它也将这些消息写入日志文件.
我哪里做错了?
您已配置Log4Net,以便根日志记录器同时记录文件和事件日志追加器.
所有记录器都会继承此配置,因此您的记录器“DataIntakeService”和“EventLogAppender”都会记录到这些附录.
如果在事件查看器中看不到日志消息,可能是因为您的应用程序没有创建事件源的权限.
UPDATE
How can i configure it so the DataIntakeService logs to the file and the other one to the eventviewer ?
以下是一个示例配置:
<log4net> <root> <level value="INFO" /> <appender-ref ref="LogFileAppender" /> </root> <logger name="EventLogAppender" additivity="False"> <level value="INFO" /> <appender-ref ref="EventLogAppender" /> </logger> <appender> ...
有了这个例子:
>根记录器(以及所有的子记录器,除非另有明确配置)将记录到LogFileAppender.您的DataIntakeService记录器未显式配置,因此继承此配置.
> EventLogAppender记录器被明确配置为登录到EventLogAppender,并且配置为不继承父记录器中的设置(additivity =“false”).因此,它不会记录到LogFileAppender.如果设置additivity =“true”,它将继承设置并记录到LogFileAppender和EventLogAppender.
顺便提一句,命名一个记录器EventLogAppender可能有点混乱:EventLogLogger可能是一个更好的名字.
http://stackoverflow.com/questions/17106559/using-log4net-to-write-to-different-loggers
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- spring-mvc – Log4j,Spring MVC,没有可用于记录器的appender
- 优化ElasticSearch写入效率
- golang 创建,读取,写入文件
- Kafka学习笔记 -- 写入数据
- Elasticsearch 写入原理深入详解
- 高频写入redis场景优化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。