gpt4 book ai didi

c# - log4net 和每个线程唯一的日志文件

转载 作者:行者123 更新时间:2023-11-30 17:51:10 24 4
gpt4 key购买 nike

我有一个接收 WCF 请求的 Windows 服务进程。对于每个请求,它都会创建一个新线程来完成一些工作。我想为主机进程创建一个日志文件,并为每个线程实例创建一个单独的唯一日志文件。例如,我希望日志文件类似于“%date{yyyyMMdd}_%property{UniqueId}.log”。这是我目前所拥有的。

<appender name="ThreadAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:\Logs\%date{yyyyMMdd}\%date{HHmmss}_%property{FileID}.log"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="10MB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]
"/>
<footer value="[Footer]
"/>
<conversionPattern value="[%date] [%thread] [%-5level] %logger - %message%newline"/>
</layout>
</appender>
<appender name="ServiceAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\Service.log"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="10MB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]
"/>
<footer value="[Footer]
"/>
<conversionPattern value="[%date] [%thread] [%-5level] %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="ThreadAppender"/>
</root>
<logger name="ServiceLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="ServiceAppender"/>
</logger>

然后,在我的线程中,我使用 LogicalContext.Properties["FileID"] = <some id> .我还有[assembly: log4net.Config.XmlConfigurator(Watch = true)] assemblyinfo.cs 文件中的行。

几乎一切正常 :)。一个问题是,当我启动 Windows 服务时,它会自动创建新的 %date{HHmmss}_(null).log 文件。我需要配置什么以使 log4net 不创建此虚拟文件?另外,是否需要为 ServiceAppender 和 ThreadAppender 指定文件锁定?

最佳答案

由于并发问题,该代码无法按预期工作。 log4net.Config.XmlConfigurator.Configure 强制应用新的属性值,但它会影响所有线程,因此其他并发请求的消息将被重定向到新文件。

我唯一可行的解​​决方案是使用 ILoggerRepository。

关于c# - log4net 和每个线程唯一的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869394/

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