为什么 RollingInterval.Day 不断创建新的 Serilog 日志文件?

BWh*_*lan 5 c# xaml serilog uwp

我使用 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();

Run Code Online (Sandbox Code Playgroud)
        public string GetFile(String FileName)
        {
            string s = ApplicationData.Current.LocalFolder.Path;
            return s + "\\" + FileName;
        }
Run Code Online (Sandbox Code Playgroud)

我怀疑它多次调用构造函数,这可能是问题的一部分。但是滚动间隔应该只在新的一天时创建一个新文件,对吧?因为当应用程序多次启动时,它过去会使用与今天日期相对应的任何文件。因此,我要么需要一种方法使 Log.Logger 静态以使其具有通用性,要么需要一种方法使其仅使用一个文件。任何帮助将非常感激

Gre*_*reg 7

更新:

由于滚动文件已被弃用,您可以使用Serilog.Sinks.FileNuget 中的包来实现。滚动文件的语法是:

        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .WriteTo.Console()
            .WriteTo.File($@"{logPath}\log-.txt", rollingInterval: RollingInterval.Day)
            .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

你安装了Serilog.Sinks.RollingFileNuGet 吗?据我了解,滚动文件方面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();
Run Code Online (Sandbox Code Playgroud)

默认为每日日志文件,除非大小变得太大。