我正在使用visual studio 2008,.net framework 3.5,windows 7上的一個解決方案。我創建了一個log4net庫,它寫入一個txt文件,並希望在我的解決方案上的幾個項目上使用它, wcf服務與Visual Studio本地運行的解決方案相同。如何設置log4net,以便它可以在wcf服務上運行?
我從解決方案的控制檯應用程序啓動程序。控制檯應用程序調用其他項目,這些項目使用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>
我該如何解決這個問題?
我從來沒有設法讓我的WCF服務使用匯編屬性,最後我放棄了,只是使用了'XmlConfigurator.ConfigureAndWatch(...)' – stuartd 2014-11-06 22:36:47
@stuartd您在說我應該刪除服務的web.config上的log4net部分,並將該部分保留在服務上的AssemblyInfo.cs中。我做了這種改變,但仍然沒有寫入文件。 – pyram 2014-11-06 23:14:12
不,我從來沒有設法讓我的WCF服務通過程序集屬性加載log4net,所以我使用XmlConfigurator來配置日誌記錄。我沒有花費太多時間,因爲我想要記錄工作並繼續前進。調用GetLogger後,LogManager.GetRepository()。Configured'是否返回true? – stuartd 2014-11-06 23:27:56