3

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

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

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

4 回答 4

6

时间部分的使用DateTime.Today归零。您应该使用DateTime.NoworDateTime.UtcNow以使返回的DateTime包含一个不同于零的小时。

于 2010-03-22T11:22:20.207 回答
1

今天只给出当前日期。所以 HH 总是“00”。尝试 DateTime.Now.ToString("yyyyMMddHH") 代替。

于 2010-03-22T11:30:29.200 回答
0

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

于 2010-03-22T11:24:54.440 回答
0

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

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

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

在 的情况下DateTime.Today,无论一天中的什么时间,您都会看到相同的值。这就是为什么您只创建第一个文件的原因,因为您的代码目前只会每天而不是每小时创建一个唯一的文件名。

换成你DateTime.TodayDateTime.Now问题就解决了。

于 2010-03-22T11:42:14.823 回答