首页 > 其他分享 >log4net 文件日志缓存(buffersize)

log4net 文件日志缓存(buffersize)

时间:2022-10-26 12:00:27浏览次数:48  
标签:log4net 文件 缓存 写入 日志 buffersize BufferingForwardingAppender

公司用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

标签:log4net,文件,缓存,写入,日志,buffersize,BufferingForwardingAppender
From: https://www.cnblogs.com/chinasoft/p/16827813.html

相关文章

  • Git配置、缓存用户名密码和清除缓存
    配置用户名和邮箱:gitconfig--globaluser.name"username"gitconfig--globaluser.email"[email protected]"清除配置中纪录的用户名和密码,下次提交代码时会让重......
  • linux 清理java缓存,Linux手动释放缓存的方法
    Linux释放内存的命令:syncecho1>/proc/sys/vm/drop_cachesdrop_caches的值能够是0-3之间的数字,表明不一样的含义:0:不释放(系统默认值)1:释放页缓存2:释放dentries和in......
  • 负载均衡环境下缓存处理
    深入学习EnterpriseLibraryfor.NETFramework2.0的Cache机制——分析篇,这篇文章介绍了很多Caching方面的内容,我就不详细说了,我这里主要说一个最近......
  • ASP.NET 4 AppFabric 输出缓存提供程序
    缓存是用来保存你数据的地方,从而使你的应用程序访问更快速。缓存可以根据你的需要分配到许多台机器上,而开发人员无需关心数据究竟在哪台机器上。为了获得......
  • 聊聊 MyBatis 缓存
    聊聊MyBatis缓存首发公众号-悟空聊架构:图解|聊聊MyBatis缓存你好,我是悟空。本文主要内容如下:一、MyBatis缓存中的常用概念MyBatis缓存:它用来优化SQL数据......
  • MASA Framework 缓存入门与设计
    概念什么是缓存,在项目中,为了提高数据的读取速度,我们会对不经常变更但访问频繁的数据做缓存处理,我们常用的缓存有:本地缓存内存缓存:IMemoryCache分布式缓存Redis:......
  • CacheManager:–个通用缓存接口抽象类库
    CacheManager是–个缓存通用接口抽象类库,它支持各种高速缓存提供者,例如Memcache,Redis,并且有许多先进的功能特性。具体可以访问官方网站 ​​http://cachemanager.net......
  • Eureka源码之Server端的多级缓存机制
    一、前言上一讲我们讲到了Eureka注册中心的Server端有三级缓存来保存注册信息,可以利用缓存的快速读取来提高系统性能。我们再来细看下:一级缓存:只读缓存readOnlyCache......
  • 缓存 - 方法注解组件开发
    缓存概述解决不同设备间速度不匹配问题。互联网分层架构:降低数据库压力,提升系统整体性能,缩短访问时间。高并发问题缓存并发(击穿):缓存过期后将尝试从后端数据库获取数......
  • Hibernate缓存及核心接口类详解
    Hibernate缓存概述一级缓存(session级别缓存)也叫事务级别的缓存二级缓存(sessionFactory缓存)也叫应用级缓存三级缓存(查询缓存)区别:一级缓存的生命周期和session的生命......