2011-10-07 244 views
1

我正在開發作爲Windows服務運行的c#應用程序。 我在應用程序中正在做什麼事情,我將它寫入日誌文件。 日誌目錄被添加到app.config文件中,如下所示。寫入日誌文件

<add key ="LogDir" value="log" /> 
    <add key ="LogLevel" value="2" /> 

而在c#代碼上面的一個訪問如下。

int logLevel = Convert.ToInt32(ConfigurationManager.AppSettings["logLevel"]); 
       if (logLevel > 0) 
       { 
        logger = new Logger(); 
        logger.TraceLevel = logLevel - 1; 
        logger.logDir = ConfigurationManager.AppSettings["logDir"]; 
        logger.logFileBaseName = "touchserver"; 
       } 

然後當任何進程正在發生的事情我正在將數據寫入日誌如下。

TouchServer.Log(Logger.MessageType.Trace, 1, "Item successfully deleted"); 

當我運行在調試模式下(我的意思是作爲控制檯應用程序)日誌文件將在應用程序的調試文件夾中創建,數據將寫入日誌文件的應用程序。

但我的問題是,當我安裝我的應用程序服務沒有得到在debug文件夾中創建日誌文件,我無法看到動作進行,萬一要是出了什麼差錯。

請幫我找到這個解決方案。

,我使用Installutil命令安裝服務。

在此先感謝 桑吉塔

回答

3

雖然可以進入,爲什麼這不工作和解決方案,整體沒有必要實施記錄組件。

有跡象表明,這樣做非常好提供優秀的免費圖書館。 log4net非常受歡迎。它易於使用,功能豐富而高效。看看它。

+1

但即使是最好的日誌記錄API不能解決OP的問題,如果服務帳戶不允許寫入指定的目錄。 – Stephan

+0

非常感謝你,它通過改變代碼中的路徑起作用。當它作爲服務運行時,它試圖在system32文件夾中寫入。然後我將它封裝到所需的路徑中。 – user703526

+0

很高興你解決了。我仍然會推薦使用lo4net。 –

2

但我的問題是,當我安裝我的應用程序作爲服務的日誌文件沒有在調試文件夾中創建,並且我無法看到執行的操作,萬一出現任何問題。

查看使用Process Monitor查看IO操作的結果。我懷疑你會發現用於運行服務進程的身份在寫入日誌文件的位置沒有寫權限。

但更好的選擇是使用現有的日誌庫爲Hemal suggests