背景:之前用log4net记录日志基本都是推到文本文件中,这次项目中想把一些产生的日志信息存到MySql中,推送数据库问题不大,配置好就行了,可是发现网站启动一段时间后就不会输出日志到MySql中,相比于,文本文件中会一直输出。
解决:显而易见的是Log4Net与MySql连接中出了问题,导致日志不能及时插入到数据库。我这个项目中需要存入数据库中的信息也不是频繁的输出,那么猜测有可能是LogNet连不上MySql了。
度娘给的结果不尽人意,那我就索性看一下LogNet的源码了
通过查看源码可以看出,在输出日志到数据库时(SendBuffer方法),会判断当前连接状态ConnectionState以及一个参数ReconnectOnError,如果不是连接状态,参数ReconnectOnError为False时,则取消向数据库的输出;那查看了ReconnectOnError的默认值的确是False,答案已经快要浮出水面了
贴一下源码:
查看了我的log4net.config中,没有配置ReconnectOnError,那答案应该就是配置ReconnectOnError为True,那么从字面上来看这个参数应该就是数据库异常后是否重新连接;
<!--数据库连接异常时,是否重新连接-->
<reconnectOnError value="True"/>
经过测试,确实没有以前问题了,妈妈再也不用担心日志不能持续输出到数据库了!