我正在使用Serilog作为程序的记录器。尝试制作将yyyymmdd日期附加到每个文件的滚动间隔文件。
下面的代码正是我一直使用的代码,它在4-5天的测试和进一步开发我的UWP应用中工作了很长时间。然后我认为我的应用程序开始在同一日期创建多个文件,将它们分别命名为logs-yyyymmdd_01,logs-yyyymmdd_02等。
这在MainPageViewModel构造函数中
Log.Logger = new LoggerConfiguration().MinimumLevel.Debug()
.WriteTo.File(this.GetFile("logs-"), rollingInterval: RollingInterval.Day)
.CreateLogger();
public string GetFile(String FileName)
{
string s = ApplicationData.Current.LocalFolder.Path;
return s + "\\" + FileName;
}
我怀疑它多次调用构造函数,这可能是问题的一部分。但是滚动间隔仅应在新的一天创建一个新文件吗?因为当应用程序多次启动时,它曾经使用与今天日期对应的任何文件。因此,我要么需要一种使Log.Logger静态以使其具有通用性的方法,要么需要一种使其仅使用一个文件的方法。任何帮助将不胜感激
答案 0 :(得分:1)
您是否已从NuGet安装了Serilog.Sinks.RollingFile
?我的理解是Serilog.Sinks.File
的滚动文件方面仍然依赖于该依赖关系。
话虽如此,我使用以下内容:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.RollingFile($@"{Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)}\Organization\{Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().MainModule.FileName)}\Logs\log.txt")
.CreateLogger();
除非大小过大,否则默认为每日日志文件。
答案 1 :(得分:0)
有同样的问题。在 WriteTo.File() 调用中添加 shared 参数为我修复了它:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(@"C:\Logs\Log_.txt", shared: true, rollingInterval: RollingInterval.Day)
.CreateLogger();