gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:18:50 26 4
gpt4 key购买 nike

我使用 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 成为静态的以便它是通用的,要么需要一种方法让它只使用一个文件。任何帮助将非常感激

最佳答案

更新:

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

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

您是否安装了 Serilog.Sinks.RollingFile来自 NuGet?我的理解是 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();

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

关于c# - 为什么 RollingInterval.Day 不断创建新的 Serilog 日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com