2010-03-22 79 views
3

我試圖每小時創建一個新的日誌文件,並在服務器上運行以下代碼。當天的第一個日誌文件正在創建並寫入正常,但當天沒有創建其他日誌文件。任何想法可能會出錯?也沒有例外。StreamWriter沒有創建新文件

private void LogMessage(Message msg) 
{ 
    string name = _logDirectory + DateTime.Today.ToString("yyyyMMddHH") + ".txt"; 

    using (StreamWriter sw = File.AppendText(name)) 
    { 
     sw.WriteLine(msg.ToString()); 
    } 
} 

回答

6

使用DateTime.Today歸零時間部分。您應該使用DateTime.NowDateTime.UtcNow,以便返回的DateTime包含一個不同於零的小時。

+0

他使用DateTime.Today創建具有該名稱的文件。使用DateTime.Now作爲文件名是沒有意義的,因爲他想在當前一天重用該文件。 – MadBoy

+0

@MadBoy,來自OP問題:(「我試圖每小時創建一個新的日誌文件」)。然後將返回的「DateTime」格式化爲只包含日期和小時組件。 –

+0

d'oh!謝謝JA。 *掛在恥辱* – fearofawhackplanet

0

由於datetime.today的使用情況,您的路徑顯示不正確。 嘗試在功能中使用Path.Combine以防止其他錯誤(如「/」添加等)MSDN

1

今天只給出當前日期。所以HH總是「00」。 改爲嘗試DateTime.Now.ToString(「yyyyMMddHH」)。

0

你只得到一個文件的原因是由於你使用了DateTime.Today而不是DateTime.NowDateTime.TodayDateTime.Now的值相同,但時間元素設置爲午夜(00:00)。

DateTime.Now.ToString("yyyyMMddHH")生產 「2010032211」

DateTime.Today.ToString("yyyyMMddHH")生產 「201032200」(沒有時間部分)

DateTime.Today的情況下,你會看到,無論一天的時間相同的值。這就是爲什麼你只能得到第一個創建的文件,因爲你的代碼目前只能每天創建一個唯一的文件名,而不是每個小時。

更改DateTime.TodayDateTime.Now並解決您的問題。