gpt4 book ai didi

c# - 如何设置 log4net 以便它在 wcf 服务上工作?

转载 作者:太空狗 更新时间:2023-10-29 21:50:03 25 4
gpt4 key购买 nike

我正在使用 visual studio 2008、.net framework 3.5、windows 7 上的解决方案。我创建了一个写入 txt 文件的 log4net 库,并希望将它用于我的解决方案的多个项目以及一个 wcf 服务,它位于从 visual studio 本地运行的同一解决方案中。

我从解决方案的控制台应用程序启动程序。控制台应用程序调用其他项目,这些项目使用 log4net。在工作流的这个级别,日志写得很好。当调用 wcf 服务时问题就来了。 wcf 服务使用日志,但 log4net 不写入文件。

在控制台项目上我有这个:

在 AssemblyInfo.cs 上:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

在 App.config 上我有 log4net 配置。

在 Program.cs 上,在我的 Main 方法上:

LogManager.GetLogger("Initialise log4net from the current assembly attributes");

在 WCF 服务上我有这个:

AssemblyInfo.cs 与控制台项目相同。

在 Web.config 上与控制台项目上的 App.config 相同。

在 Service1.svc 的构造函数中,我有:

LogManager.GetLogger("Initialise log4net from the current assembly attributes");

这就是我的 App.config 和 Web.Config 的样子:

在 configSections 标签内:

 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>

在主配置标签内:

 <log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="C:\test3.txt"/>
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c %m%n" />
</layout>
</appender>
</log4net>

我该如何解决这个问题?

最佳答案

您有 XmlConfigurator 的示例以便我可以配置日志记录吗?

var logpath = HostingEnvironment.MapPath("~/web.config");
var fileInfo = new FileInfo(logpath);

if (fileInfo.Exists == false)
{
throw new InvalidOperationException("Can't locate the web.config file");
}

log4net.Config.XmlConfigurator.ConfigureAndWatch(fileInfo);

请注意,只有采用 FileInfo 的 ConfigureAndWatch 方法的重载才能直接读取 .config 文件而不是使用 System.Configuration(一旦读取文件就无法重新读取)来监视 app.config 或 web.config阅读它)。

文档对此进行了解释 here .

由@pyram 编辑:因为两个项目都记录到同一个文件,所以有必要将此行添加到两个项目的 appender 配置中:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

关于c# - 如何设置 log4net 以便它在 wcf 服务上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790305/

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