c# – 如何设置log4net以便它可以在wcf服务上运行?

我正在使用visual studio 2008,.net framework 3.5,windows 7上的解决方案.我已经创建了一个log4net库,它可以写入txt文件并希望在我的解决方案和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方法的重载才能观看app.config或web.config,因为它直接读取.config文件而不是使用System.Configuration(一旦读取文件就无法重新读取它) .

文档解释了这个here.

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

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

转载注明原文:c# – 如何设置log4net以便它可以在wcf服务上运行? - 代码日志