我目前正在使用log4net构建一个ASP.Net-MVC应用程序进行日志记录,但是记录器似乎只是随机停止.它会愉快地记录一段时间,然后停止,然后在一段时间后再次启动.我甚至不确定是什么让它恢复记录.我不是在谈论丢失的一些消息 - 有时它会消失很长一段时间,比如一个小时左右.
为什么会这样停下来开始?我应该如何正确配置它,以便它不会随意停止?
这是我的配置:
<log4net debug="true">
<appender name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">
<file value="..\Logs\\CurrentLog.txt" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Date" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)
Alc*_*nja 58
如果出现问题并且无法写入其appender,Log4Net将无声地失败.这实际上是一件好事,因为它意味着一些失败的日志记录不会降低一个健康的系统,但是当一些东西没有像你期望的那样记录时,它会很烦人.
你最好的办法是打开log4net自己的内部日志记录来做一些诊断,并(希望)找出它失败的原因.
所以在你的应用程序的配置文件中添加:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这将打开发送到的内部日志记录System.Diagnostics.Trace,因此您可以添加:
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
将其捕获到文件中.
| 归档时间: |
|
| 查看次数: |
14523 次 |
| 最近记录: |