2017-02-20 90 views
1

我有一個用C#編寫的類庫,用於將錯誤和其他信息寫入文本或日誌文件。問題在於它在將文本寫入文件時正在更改文本。它正在被一個vb.net應用程序調用。StreamWriter爲什麼改變它寫入文件的文本?

應寫入文本:02-20-2017 08:17:42 - Personality Update() beginning:

,實際上是正在寫入的文字:02-20-2017 08:17:42 - Per42onaliA17 Up20aAe() beA.D.inninA.D.:

下面是調用寫出來的字符串的方法的代碼。

errHandler.AddLineToLogFile(Me.MasterLogFileName, "Personality Update() beginning:") 

下面是調用的方法。

public void AddLineToLogFile(string logFile, string message, bool replaceExistingFile = false) 
    { 
     DateTime now = DateTime.Now; 
     using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile)) 
     { 
      writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss - " + message)); 
      writer.WriteLine(" "); 
     } 
    } 

有人可以幫我解決這個問題嗎?

+3

你爲什麼要對字符串變量做message.ToString()? – Rumplin

+0

「消息」已經是字符串,您不需要轉換爲字符串。 – imsome1

+2

您的消息也位於'now'DateTime的ToString()中。所以這就是爲什麼字符'正在被轉換爲42(秒錶示秒),等等...... –

回答

4

您正在將now轉換爲字符串,並且您的其他文本在ToString方法中。 分開這兩個,它應該沒問題。

writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss") + " - " + message); 
2

嘗試

DateTime now = DateTime.Now; 
using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile)) 
{ 
    writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss") + "- " + message); 
    writer.WriteLine(" "); 
} 
9

您傳遞消息的日期格式的一部分。匹配已知格式的部件將被替換爲now中的值。添加消息後格式化你DateTime

now.ToString("MM-dd-yyyy HH:mm:ss") + " - " + message 
  • s =第二(42
  • t =的AM/PM指示(A
  • y的第一個字符=年,從0到99(17
  • d =當天(20
  • g =週期或時代(A.D.

這就是爲什麼

MM - DD - YYYYHH毫米SS - 每s onali TY最多d一個 E()是 innin

變得

二零一七年二月二十日八時17分42秒 - Per42onaliA17 Up20aAe( )beA.D.inninA.D .:

可以找到自定義日期格式的完整列表here on MSDN

+2

這是最精確和最完整的答案,也解釋了不只是發佈代碼修復的問題。 –

+0

謝謝。這很有道理。我應該自己想清楚了。我很感激幫助。 – MJG

相關問題