我正在尝试每小时创建一个新的日志文件,并在服务器上运行以下代码。正在创建当天的第一个日志文件并写入正常,但当天没有创建更多日志文件。什么想法可能会出错?也没有抛出异常。
private void LogMessage(Message msg)
{
string name = _logDirectory + DateTime.Today.ToString("yyyyMMddHH") + ".txt";
using (StreamWriter sw = File.AppendText(name))
{
sw.WriteLine(msg.ToString());
}
}
答案 0 :(得分:6)
使用DateTime.Today
将时间部分归零。您应该使用DateTime.Now
或DateTime.UtcNow
,以便返回的DateTime
包含不等于零的小时。
答案 1 :(得分:1)
今天只提供当前日期。所以HH总是“00”。 请改为使用DateTime.Now.ToString(“yyyyMMddHH”)。
答案 2 :(得分:0)
由于datetime.today的使用,您的路径似乎不正确。 尝试在功能中使用Path.Combine以防止其他错误,例如'/'添加等MSDN
答案 3 :(得分:0)
您只获得一个文件的原因是您使用了DateTime.Today
而不是DateTime.Now
。 DateTime.Today
与DateTime.Now
的值相同,但时间元素设置为午夜(00:00)。
DateTime.Now.ToString("yyyyMMddHH")
生成“2010032211”
DateTime.Today.ToString("yyyyMMddHH")
生成“201032200”(无时间部分)
对于DateTime.Today
,无论何时何时,您都会看到相同的值。这就是为什么你只获得第一个文件的原因,因为你的代码目前每天只创建一个唯一的文件名,而不是每小时。
将DateTime.Today
更改为DateTime.Now
,您的问题就解决了。