log4net 性能低下,每秒只能写70个左右的记录

datafansbj 2015-12-25 02:41:32
使用log4net(1.2.12.0),输出日志性能低下,每秒大约70条左右,导致日志丢失严重。
硬件:i5 2400,500G 硬盘,8GB内存
软件:VS2010 SP1,C#
log4配置(部分)如下:

<log4net>
<root>
<level value="WARN" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>

<logger name="">
<level value="DEBUG"/>
</logger>

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="XDHY.NSMS.DPC.Log" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="true" />
<param name="MaximumFileSize" value="100MB" />
<param name="RollingStyle" value="Size" />
<param name="MaxSizeRollBackups" value="10" />

<layout type="log4net.Layout.PatternLayout">
<!--<param name="Header" value="[Header]"/>-->
<!--<param name="Footer" value="[Footer]"/>-->
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>

<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
<param name="MaximumFileSize" value="20MB" />
<param name="RollingStyle" value="Size" />
</layout>
</appender>
</log4net>

日志按 100MB滚动删除,最多保留10个备份。
...全文
647 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
datafansbj 2015-12-31
  • 打赏
  • 举报
回复
通过调试log4net源码,找到原因了,是启用了ConsoleAppender,该Appender造成的日志输出慢,屏蔽掉就快多了。 注释掉 <appender-ref ref="ConsoleAppender" />即可。 谢谢各位。
江南小鱼 2015-12-28
  • 打赏
  • 举报
回复
没感觉log4net慢,哥写收费前置机,用log4net记日志的,峰值并发量很大的,日志都完整呢。
bigbaldy 2015-12-28
  • 打赏
  • 举报
回复
用NLog,https://github.com/NLog/NLog
在飞的特拉斯 2015-12-28
  • 打赏
  • 举报
回复
引用 楼主 datafansbj 的回复:
使用log4net(1.2.12.0),输出日志性能低下,每秒大约70条左右,导致日志丢失严重。 硬件:i5 2400,500G 硬盘,8GB内存 软件:VS2010 SP1,C# log4配置(部分)如下: <log4net> <root> <level value="WARN" /> <appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <logger name=""> <level value="DEBUG"/> </logger> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" > <param name="File" value="XDHY.NSMS.DPC.Log" /> <param name="AppendToFile" value="true" /> <param name="StaticLogFileName" value="true" /> <param name="MaximumFileSize" value="100MB" /> <param name="RollingStyle" value="Size" /> <param name="MaxSizeRollBackups" value="10" /> <layout type="log4net.Layout.PatternLayout"> <!--<param name="Header" value="[Header]"/>--> <!--<param name="Footer" value="[Footer]"/>--> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="FATAL" /> </filter> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> <param name="MaximumFileSize" value="20MB" /> <param name="RollingStyle" value="Size" /> </layout> </appender> </log4net> 日志按 100MB滚动删除,最多保留10个备份。
你改成 不要滚动的试试
bluedoctor 2015-12-27
  • 打赏
  • 举报
回复
从来都是自己写日志,log4Net它会用反射的。
chutao 2015-12-26
  • 打赏
  • 举报
回复
免费开源日志组件 AHCT.Log.NLogger首页、文档和下载 - .Net日志组件 - 开源中国社区 http://www.oschina.net/p/ahct-log-nlogger
  • 打赏
  • 举报
回复
你写入的内容多大? 可以考虑在写日志之前加上消息队列

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧