2015-10-30 58 views
0

你好,我試圖把npgsqlexception字符串放入文本文件,但不知何故它不寫入它,但字符串顯示在控制檯窗口中,Log.txt文件存在於調試文件夾。下面是代碼:寫npgsqlexception字符串到文件不寫

catch (NpgsqlException ex) 
{ 
    Console.WriteLine(ex); 
    StreamWriter file = new StreamWriter("\\Log.txt"); 
    file.WriteLine(ex); 
    file.Close(); 
} 
+2

您是否嘗試過提供日誌文件的完整路徑? – Izzy

+2

刪除兩個反斜槓。 –

+0

試圖刪除它們,但文件仍然是空的控制檯充滿了例外。我只需要app目錄becouse程序將在很多PC上使用 –

回答

0

你必須調用StreamWriter.Flush()將數據寫入到文件中:

catch (NpgsqlException ex) 
{ 
    Console.WriteLine(ex); 
    StreamWriter file = new StreamWriter("Log.txt"); 
    file.WriteLine(ex); 
    file.Flush(); 
    file.Close(); 
} 

更新 - 刪除反斜槓也是如此。如果仍然沒有工作,請嘗試使用一個FileStream作爲StreamWriter的構造:

StreamWriter file = new StreamWriter(new FileStream("Log.txt", FileMode.OpenOrCreate)); 

更新 - 如果仍然doen't工作,我們有了一些其他的問題。以上應該肯定有效。作爲替代,您可以使用:

File.WriteAllText("Log.txt", ex.ToString()); 
+0

沒有幫助,甚至沒有創建文件。 –

+0

查看更新的答案。 –

+0

@ FarhanAnam,所以你要在'file.Flush()之前調用file.Close()'這不是答案。另外,如果他希望在App目錄中創建文件,那麼他需要使用StreamWriter重載來傳遞文件路徑。假,爲了覆蓋文件,如果它存在與否......甚至在異常塊中簡單寫入文件時甚至不需要刷新,我可以看到你是否在循環中,並且想要查看已經寫入的內容等等...沖洗是好的..但是對於這並不是真的有必要 – MethodMan