log4net 文件日志缓存(buffersize)

公司用log4net记录日志,文件的形式,后面想记录的东西越来越多。发现会出现文件被占用的情况。就想log4net应该有缓存,当要写入的文件达到一定数量的时候再写入。然后在网上查了很多,发现几乎没有写文件日志用缓存的,都是数据库缓存到一定条数在写入。

 

经过一天的测试终于成功了。下面是部分代码和配置

<log4net debug="true">

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

<bufferSize value="10"/><!--次数-->

<appender-ref ref="RollingLogFileAppender" />

</appender>

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

<file value="applicationLog.log" />

<appendToFile value="true" />

<rollingStyle value="Size" />

<maxSizeRollBackups value="10" />

<maximumFileSize value="2MB" />

<staticLogFileName value="true" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="[%date] %thread -- %-5level -- %logger [%M] -- %message%newline" />

</layout>

</appender>

<root>

<level value="DEBUG" />

<appender-ref ref="BufferingForwardingAppender" />

<!--这里不能有此节点<appender-ref ref="RollingLogFileAppender" />-->

</root>

</log4net>

 

然后代码中这样写

log4net.ILog log = log4net.LogManager.GetLogger("BufferingForwardingAppender");

log.Info(“日志”);

注意配置节点的顺序root→BufferingForwardingAppender→BufferingForwardingAppender→RollingLogFileAppender。root配置中不能出现<appender-ref ref="RollingLogFileAppender" />。再有bufferSize 的值不是大小,而是记录日志的次数,我配置的10,到第十一次的时候就会写入文件。

 

查网页不管是官网还是博客都说了BufferingForwardingAppender的用法,这里就不多说了。

但是自己测试的时候一开始没有测试出来,可能是我一开始把buffersize的value值当成是大小而不是次数,导致测试的时候还以为是自己配置有问题呢。

 

因为第一次接触,原理还不是很懂,但是查了很多写文件日志缓存的办法都没找到,所以发到这里希望对大家有用。

 

最后不要忘了配置log4net.config的路径,系统启动的时候:log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~") + @"\log4net.config")); 或者项目的AssemblyInfo.cs中[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
————————————————
版权声明:本文为CSDN博主「yangguosheng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangguosheng/article/details/107703111

posted @ 2022-10-26 11:54  China Soft  阅读(150)  评论(0编辑  收藏  举报