2012-09-03 59 views
0

我創建了一個具有一些功能的類庫,並且維護一個日誌文件來跟蹤執行的步驟。如果我以調試模式運行此類庫,它正在成功創建日誌文件。安裝dll後日志文件不是由類庫創建的

但是,在創建該類庫的tlb文件並安裝到系統後,我創建了cab文件。現在我正在使用該庫,所有功能都正常工作,只有日誌文件沒有寫入。

我用代碼來創建日誌文件如下─

public static void LogTrace(string LogMessage) 
    { 
     try 
     { 

      string LogError = string.Empty; 
      String DirPath = string.Empty; 

      DirPath= Convert.ToString(ConfigurationSettings.AppSettings["DirPath"]); 
      LogError = Convert.ToString(ConfigurationSettings.AppSettings["LogError"]); 

      //if logging is not required 
      if (LogError.ToLower() == "true") 
      { 
       if (DirPath == null || DirPath == string.Empty) 
        DirPath = @"C:\LogAndError"; 

       if (LogError == null || LogError == string.Empty) 
        LogError = "True"; 

       //creation of date wise file name 

       string LogFileName = DirPath + "\\Log_ " + DateTime.Now.ToString("MM_dd_yyyy") + ".txt"; 
       createLogAndErrorFile(DirPath); 

        StreamWriter streamWriter = null; 
        streamWriter = new StreamWriter(LogFileName, true); 
        streamWriter.WriteLine("Time :" + DateTime.Now.ToString() + " "); 
        streamWriter.WriteLine(LogMessage); 
        streamWriter.WriteLine(Environment.NewLine); 
        streamWriter.Flush(); 
        streamWriter.Close(); 

      } 
     } 
     catch 
     { 
      //We are not throwing any exception because all the exeption is logged using this method 
      //and throwing the exception could lead to recursive call of function. 
     } 
    } 
    public static void createLogAndErrorFile(string DirPath) 
    { 
     if (!Directory.Exists(DirPath)) 
      Directory.CreateDirectory(DirPath); 
    } 
} 

我這麼想嗎?

+0

我與它有沒有問題,使用,你的DirPath點在哪裏?如果(LogError.ToLower()==「true」)返回true,您是否擁有該目錄的寫權限? – coolmine

+0

@CooLMinE我已經在DirPath中定義了「D:\ LogsAndErrors」。雖然它是在構建模式下運行時寫入日誌。但如果我在另一個項目中使用dll,那麼它不會寫入。 –

+1

確保您在客戶端配置中定義了'LogError'或更改第一個if(LogError ==「true」)。我還建議,不要吞嚥錯誤,而是讓它拋出並處理異常或回退到事件日誌。 –

回答

0

驗證您是否有權查看在您的文件

將您在try catch塊和捕獲異常 代碼,我建議你使用塊

try 
{ 

      var path = Path.Combine(DirPath, string.Concat("\\Log_",DateTime.Now.ToString("MM_dd_yyyy"), ".txt")); 

      using (StreamWriter streamWriter = new StreamWriter(path)) 
      { 
       streamWriter.WriteLine("Time :" + DateTime.Now.ToString() + " "); 
       streamWriter.WriteLine(LogMessage); 
       streamWriter.WriteLine(Environment.NewLine); 

      } 


} 
catch(Exception ex) 
{ 
    Console.Write(ex.Message); 
    throw ex; 
} 
+0

我已經告訴過它是正確的。但是在其他應用程序中使用dll時,則不會寫日誌。 –

+0

你有例外嗎? –

+0

不會..如果發生任何異常,我無法在dll中知道。 –