我有一个日志类。如果不存在,它会创建一个新的 log.txt 文件并将消息写入该文件。我还有一种方法可以运行以检查文件大小以及根据本地设置创建文件的时间。如果 log.txt 的创建时间与当前时间的差值超过本地设置的 MaxLogHours 值,则将其存档到本地存档文件夹并删除。新的 log.txt 文件由上述过程在下次向类发送日志消息时创建。
这很好用,除了当我查看我的 log.txt 文件的 FileInfo.CreationTime 时,它总是相同的 - 7/17/2012 12:05/18 PM - 无论我做什么。我已经手动删除了文件,程序删除了它,总是一样的。这里发生了什么?我也给旧的加了时间戳,但仍然没有任何效果。Windows 是否认为该文件是同一个文件,因为它具有相同的文件名?我会很感激任何帮助,谢谢!
归档方法
public static void ArchiveLog(Settings s)
{
FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "\\log.txt");
string archiveDir = AppDomain.CurrentDomain.BaseDirectory + "\\archive";
TimeSpan ts = DateTime.Now - fi.CreationTime;
if ((s.MaxLogKB != 0 && fi.Length >= s.MaxLogKB * 1000) ||
(s.MaxLogHours != 0 && ts.TotalHours >= s.MaxLogHours))
{
if (!Directory.Exists(archiveDir))
{
Directory.CreateDirectory(archiveDir);
}
string archiveFile = archiveDir + "\\log" + string.Format("{0:MMddyyhhmmss}", DateTime.Now) + ".txt";
File.Copy(AppDomain.CurrentDomain.BaseDirectory + "\\log.txt", archiveFile);
File.Delete(AppDomain.CurrentDomain.BaseDirectory + "\\log.txt");
}
}
写入/创建日志:
public static void MsgLog(string Msg, bool IsStandardMsg = true)
{
try
{
using (StreamWriter sw = new StreamWriter(Directory.GetCurrentDirectory() + "\\log.txt", true))
{
sw.WriteLine("Msg at " + DateTime.Now + " - " + Msg);
Console.Out.WriteLine(Msg);
}
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.Message);
}
}