我在使用log4net登錄我的應用程序時遇到問題。 我的應用程序由WCF服務和連接到它的客戶端組成。 在客戶端登錄不成問題,一切正常。WAS託管的WCF服務和log4net
這裏是我的服務器端是如何製造:
- 一個WCF DLL,它包含我的服務的合同,基本實現(包括錯誤處理)。實際操作是在單獨的業務層中進行的,該業務層拋出實現捕獲的所需異常(並使用FaultContracts發回)。
- 數據層(這裏沒有問題)。
- 「Utils」庫,其中包含我的包裝日誌方法。
我log4net.config文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
<appender name="TechnicalFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c:\\log\\technical.log"/>
<param name="AppendToFile" value="true"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="'_'yyyyMMdd-HH"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%-5t] %-5p - %m%n"/>
</layout>
</appender>
<root>
<level value="ALL"/>
</root>
<logger name="TechnicalLog">
<level value="ALL"/>
<appender-ref ref="TechnicalFileAppender"/>
</logger>
</log4net>
所以當在業務層中發生錯誤,它被捕捉,記錄並轉化爲FaultException異常。有問題。沒有創建日誌文件。 我GOOGLE了一下,發現了一些線索(一般來說,訪問權限,但我用ProcMon,並沒有找到所需的文件或目錄調用)。
我現在有點失落,我不知道該怎麼嘗試。
我發佈我的服務使用Visual Studio中的「發佈」命令,所以在服務器上我有我的應用程序目錄,裏面有一個svc文件,一個web.config文件,然後一個bin目錄與我所有的dll包括log4net.dll和log4net.config。 我試圖將該配置文件複製到我的應用程序的根目錄中,但未成功。
我也試着放置 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
聲明,我的WCF的AssemblyInfo.cs中(它最初是在utils的的AssemblyInfo.cs中),但沒有成功。
感謝您的幫助,歡迎任何想法!
嗨Stefan,謝謝你的回答。我嘗試了你的最後一個提議(把配置放在web.config中),但沒有成功......我從AssemblyInfo文件中刪除了所有的「彙編」條目,但它沒有改變任何東西......我錯過了什麼嗎? – Shimrod 2010-09-13 11:20:10
看到我修改的答案。如果你在web.config中有配置,你仍然需要告訴log4net加載它。對不起,沒有解釋清楚。 – 2010-09-13 11:44:52
它仍然沒有工作......我也嘗試硬編碼配置文件的路徑,並使用ConfigureAndWatch,但我得到一個訪問被拒絕的異常(SecurityException)......這真的很奇怪,因爲它是在相同的目錄中應用程序。 – Shimrod 2010-09-13 12:41:55