StreamWriter没有创建新文件

时间:2010-03-22 11:19:57

标签: c# .net logging filestream streamwriter

我正在尝试每小时创建一个新的日志文件,并在服务器上运行以下代码。正在创建当天的第一个日志文件并写入正常,但当天没有创建更多日志文件。什么想法可能会出错?也没有抛出异常。

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

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

4 个答案:

答案 0 :(得分:6)

使用DateTime.Today将时间部分归零。您应该使用DateTime.NowDateTime.UtcNow,以便返回的DateTime包含不等于零的小时。

答案 1 :(得分:1)

今天只提供当前日期。所以HH总是“00”。 请改为使用DateTime.Now.ToString(“yyyyMMddHH”)。

答案 2 :(得分:0)

由于datetime.today的使用,您的路径似乎不正确。 尝试在功能中使用Path.Combine以防止其他错误,例如'/'添加等MSDN

答案 3 :(得分:0)

您只获得一个文件的原因是您使用了DateTime.Today而不是DateTime.NowDateTime.TodayDateTime.Now的值相同,但时间元素设置为午夜(00:00)。

DateTime.Now.ToString("yyyyMMddHH")生成“2010032211”

DateTime.Today.ToString("yyyyMMddHH")生成“201032200”(无时间部分)

对于DateTime.Today,无论何时何时,您都会看到相同的值。这就是为什么你只获得第一个文件的原因,因为你的代码目前每天只创建一个唯一的文件名,而不是每小时。

DateTime.Today更改为DateTime.Now,您的问题就解决了。