gpt4 book ai didi

c# - log4net 记录不同的文件

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

同一个程序的两个实例被配置为登录不同的文件,这是我的log4net.config:

<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%utcdate] %-5level %logger: %message%newline%exception"/>
</layout>
</appender>

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Log/svc-%property{ServiceName}"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="'-'yyyy'-'MM'-'dd'.log'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%utcdate] %-5level %logger: %message%newline%exception"/>
</layout>
</appender>

<root>
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>

下面是我实例化日志的方式:

    log = LogManager.GetLogger(ServiceName);
GlobalContext.Properties["ServiceName"] = ServiceName;
XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));

现在,这些服务被称为“Service1”“Service10”“Service2”之类的东西。

当我启动服务 1 和 10(我正在测试的服务)时,它们都会创建自己的日志文件:

svc-BettweenSvc1-2011-07-26.log
svc-BettweenSvc10-2011-07-26.log

但是当第二个服务启动时,第一个服务的日志开始附加到第二个日志,而第二个日志不再使用。

如何在使用 log4net 的 Windows 服务中正确地记录日志文件?

最佳答案

我认为问题在于您只配置了一个 log4net 存储库(很可能是默认的)。因此,当您更改 log4net 日志文件名时,所有记录器都会开始记录到新文件名。

我相信您需要为您希望同时激活的每个单独的日志文件配置单独的存储库。

很抱歉,我帮不上忙了,我现在正在努力解决几乎相同的问题(以及其他更紧迫的问题)。

祝你好运!

编辑:查看此问题/答案以获得可能的解决方案: how-to-stop-log4net-from-writing-to-two-separate-files

关于c# - log4net 记录不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6833055/

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