gpt4 book ai didi

c# - IIS 中托管的 WCF 服务库的 log4net

转载 作者:行者123 更新时间:2023-11-30 19:09:36 24 4
gpt4 key购买 nike

对于一个项目,我有一个 WCF 服务库(目前非常简单)通过 WCF 服务网站项目托管在 IIS 7.5 中。

对于那个 WCF 服务库,我需要 log4net 来记录一些主要事件。

但是在启动并访问该网站后,没有创建日志文件。

这是我的配置详细信息:

WCF 服务库:

App.config (is containing the following)

<appSettings>
<add key="log4net-config-file" value="log4net.config"/>
<!-- <add key="log4net.Internal.Debug" value="true"/> -->
</appSettings>

log4net.config

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\\Temp\\Logfile.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<datePattern value="yyyyMMdd"/>
<maxSizeRollBackups value="5"/>
<maximumFileSize value="100KB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
</log4net>
</configuration>

In AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

On top of the Service class
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

In the Static Constructor (mainly due to fiddling around)
string configFile = ConfigurationManager.AppSettings["log4net-config-file"];
XmlConfigurator.Configure(new FileInfo(configFile));
logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

In the non-static constructor:
logger.Info("Hello world!");

Wcf服务网站项目:

 Web.Config is basically the same as App.Config of service library

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>

到目前为止我尝试了什么:

DebugView 中没有输出,IIS 配置日志中也没有关于 log4net 的信息。

我怎样才能找出问题所在?

我该怎么做才能找出它不起作用的原因?

最佳答案

您是在告诉 log4net 在记录之前在哪里可以找到配置设置?我喜欢做的事情是创建一个小型控制台程序来证明我的配置适用于一个我可以快速放在任何地方的 exe。一旦它开始工作,我就会将代码迁移到实际程序中。这样做的好处是您可以绕过 IIS 或其他障碍来证明您拥有正确的代码,然后如果它不起作用,您可以解决日志记录配置之外的问题作为罪魁祸首。

该站点通过一个非常简单的解释说明了使用 app.config 来配置 log4net 所涉及的内容。 Configure Log4net with app.config

您也可以在 AssemblyInfo.cs 中使用它

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

可在此处找到更多信息:Have log4net use application config file for configuration data

关于c# - IIS 中托管的 WCF 服务库的 log4net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312109/

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