【发布时间】:2019-12-06 03:40:02
【问题描述】:
我有成功的代码在 OnPostAsync 期间创建并写入日志文件。 每次调用此页面时,它都会创建一个包含今天日期和时间的日志文件并写入日志文件。
我想每天创建一个日志文件并写入它。我可以将时间放在内容中,而不是创建一个以今天和时间命名的新文件。 我假设我检查了一个带有今天日期的日志文件,如果它不存在,我会写我的东西。如果它存在,我只是附加我的东西。
这是我用来为页面的每个帖子创建日志文件的内容:
var newFileName = "logs\\" + DateTime.Now.ToString().Replace("/","_").Replace(":","-").Replace(" ","__") + ".txt";
var webRootPath = _environment.WebRootPath;
var dataPath = Path.Combine(webRootPath, newFileName);
然后在 OnPostAsync 结束时,我写下我需要写的任何信息字符串。
var newCourseAfterSaveInfo = "New Course Saved ::: New Temp ID in Courses_New: blah blah blah ";
System.IO.File.AppendAllLines(dataPath, new[] {newCourseAfterSaveInfo });
我已经在 VB 和 VBA 中完成了这项工作。如果文件不存在,正确的文件写入函数将创建一个文件和名称,否则它只会追加一行。但我不知道用 C# 来做这件事。
【问题讨论】:
-
我试图在此找到一个问题来回答。您是否想知道它是否是首选方法?
-
没有。我宁愿每天只创建一个日志文件并整天附加到它。目前我正在创建一个新的日志文件,只要有任何事情发生。因此,一天内发生了 7 次成功的 OnPostAsync 操作。对于所有这 7 个文件,我只想要一个日志文件。现在,我最终得到了 7 个日志文件。谢谢
-
使用 Serilog 或 log4net,编写自己的记录器很少值得付出努力。根据大小或日期或两者轮换日志是一个已解决的问题。
-
您正在使用 DateTime.Now.ToString() 方法,该方法将为您提供一个包含时间的名称。 DateTime.Now.ToString("MM-dd-yyyy") 一整天都是一样的。
-
Also: "向文件追加行,然后关闭文件。如果指定的文件不存在,则此方法创建文件,将指定的行写入文件,然后关闭文件..”来自docs.microsoft.com/en-us/dotnet/api/…
标签: c# logging system.io.file