gpt4 book ai didi

c# - Log4net 有时会创建两个日志,一个为空

转载 作者:行者123 更新时间:2023-11-30 15:26:40 25 4
gpt4 key购买 nike

使用下面的配置,大约一半的时间,我得到两个日志,一个是空的。它们的文件名相差一秒(log.2015-03-09_11-50-25 与 log.2015-03-09_11-50-26)

我试图在每次运行控制台应用程序时记录一个日志。

<log4net>

<appender name="Log" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="C:\env\QA\Logs\consoleapp\log.%date{yyyy-MM-dd_HH-mm-ss}.txt"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline"/>
</layout>
</appender>

<root>
<level value="INFO"/>
<appender-ref ref="Log"/>
</root>
</log4net>

后一个日志是唯一填充/写入的日志。

为什么会这样?我该如何解决?

编辑:原来我在我的代码中实例化了第二个记录器。当实例化发生在另一秒时,会创建第二个日志。 appender 工作正常。

最佳答案

我以前见过类似的情况 - 这是因为在文件名中指定了第二个,并且写入发生在一秒结束和另一秒开始时。

<file type="log4net.Util.PatternString" value="C:\env\QA\Logs\consoleapp\log.%date{yyyy-MM-dd_HH-mm-ss}.txt"/>

应该是

<file type="log4net.Util.PatternString" value="C:\env\QA\Logs\consoleapp\log.%date{yyyy-MM-dd}.txt"/>

在我的上一份工作中,有人在日志文件名中设置了第二个说明符,生产服务器在尝试渲染日志文件夹中包含的 150,000 个文件时差点崩溃。

编辑:

如果你想每次运行写一次,你可以将以下内容添加到你的 log4net 配置中:

<rollingStyle value="Once" />

并且您可能需要将 appendToFile 属性设置为 false。

log4net one file per run

所以你的配置应该是这样的:

<appender name="Log" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="C:\env\QA\Logs\consoleapp\log.%date{yyyy-MM-dd_HH-mm-ss}.txt"/>
<appendToFile value="false" />
<maxSizeRollBackups value="-1" /> <!--infinite-->
<rollingStyle value="Once" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline"/>
</layout>
</appender>

关于c# - Log4net 有时会创建两个日志,一个为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28946385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com