2010-09-13 122 views
2

我在使用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中),但沒有成功。

感謝您的幫助,歡迎任何想法!

回答

1

我很確定log4net沒有找到配置文件。

我有同樣的問題,我想我通過在web.config文件中包含log4net配置文件的完整路徑的應用程序設置來解決它。在我的包裝中,我確定如果log4net尚未配置,則通過調用ConfigureAndWatch方法來配置log4net。

或者,您可以簡單地將log4net配置複製到web.config文件(但我不會那樣做,因爲您沒有能力更改正在運行的系統的日誌設置)。在這種情況下,你需要這個(如果你喜歡或者一些其他文件)添加到您的AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator()] 

如果仍然沒有幫助那麼我建議打開internal debugging

+0

嗨Stefan,謝謝你的回答。我嘗試了你的最後一個提議(把配置放在web.config中),但沒有成功......我從AssemblyInfo文件中刪除了所有的「彙編」條目,但它沒有改變任何東西......我錯過了什麼嗎? – Shimrod 2010-09-13 11:20:10

+0

看到我修改的答案。如果你在web.config中有配置,你仍然需要告訴log4net加載它。對不起,沒有解釋清楚。 – 2010-09-13 11:44:52

+0

它仍然沒有工作......我也嘗試硬編碼配置文件的路徑,並使用ConfigureAndWatch,但我得到一個訪問被拒絕的異常(SecurityException)......這真的很奇怪,因爲它是在相同的目錄中應用程序。 – Shimrod 2010-09-13 12:41:55