首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Log4net会随机停止日志记录。

Log4net会随机停止日志记录。
EN

Stack Overflow用户
提问于 2010-02-15 07:29:44
回答 4查看 17.6K关注 0票数 34

我目前正在构建一个使用log4net进行日志记录的ASP.NETMVC应用程序,但是日志记录器似乎就这样随机停止了。它将愉快地记录一段时间,然后停止,然后在一段时间后重新启动。我甚至不确定是什么让它恢复日志记录。我说的不只是几条丢失的消息--有时它会消失很长一段时间,比如一个小时左右。

为什么它会像这样停下来又开始呢?我应该如何正确地配置它,使它不会像现在这样随机停止?

下面是我的配置:

代码语言:javascript
运行
复制
<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>

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-15 07:49:28

如果出现问题,并且无法写入其附加器,则Log4Net将执行fail silently。这实际上是一件好事,因为它意味着一些失败的日志记录不会使原本健康的系统崩溃,但当某些东西没有像您预期的那样进行日志记录时,这可能会令人恼火。

最好的办法是打开log4net自己的internal logging来进行一些诊断,并(希望)找出它失败的原因。

因此,在应用程序的配置文件中添加:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

这将打开发送到System.Diagnostics.Trace的内部日志记录,因此您可以添加:

代码语言:javascript
运行
复制
<configuration>
    ...
    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>
    ...
</configuration>

将其捕获到一个文件中。

票数 60
EN

Stack Overflow用户

发布于 2016-04-09 08:53:44

在应用程序生命周期中尽可能早地发送一条测试日志消息,只需一个简单的LogManager.GetLogger("Init").Info("Starting logging")即可。如果某些其他引用的代码首先启动日志记录,则初始化过程的一部分可能会失败(因为它从另一个程序集加载设置,而它只执行一次)。

点击此处阅读:https://logging.apache.org/log4net/release/faq.html#first-log

票数 1
EN

Stack Overflow用户

发布于 2018-06-06 03:54:45

还要检查AssemblyInfo.cs文件中是否仍配置了log4net。在我的示例中,签入导致此文件中的以下行被删除:

程序集: log4net.Config.XmlConfigurator(Watch = true)

这反过来导致log4net停止记录...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2263301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档