Serilog RollingFile

Tec*_*erd 11 .net c# serilog

我正在尝试将WriteTo.RollingFile与Serilog一起使用,如下所示:

var log = new LoggerConfiguration().WriteTo.RollingFile(
                    @"F:\logs\log-{Date}.txt",
                    LogEventLevel.Debug).CreateLogger();
            log.Information("this is a log test");
Run Code Online (Sandbox Code Playgroud)

我的理解是日志文件将根据日期创建和命名,并且它每天都会写入一个新文件,但是我在同一天为每个日志条目获取一个新的日志文件!如何配置Serilog每天写入一个新文件,理想情况下我每天只有一个日志文件?

是否有任何归档过程来删除超过7天的文件?

Inf*_*ger 22

试试以下:

 var log = new LoggerConfiguration()
          .MinimumLevel.Debug()
          .WriteTo.RollingFile(@"f:\log\log.txt", retainedFileCountLimit:7) 
          .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

日志文件名将自动为log-20150819.txt等.您无需指定日期.

  • 这解决了他的问题之一。另一个是关于同一天创建多个日志文件的问题。但是其中一项评论把它钉在了头上。仅配置一次,并对所有消息使用相同的日志实例。我已经配置了一次,但是我试图弄清楚如何在整个应用程序中使用它。如果我没有在每个课程中进行配置,则日志记录将停止。这是由于我的经验不足。 (2认同)

Moh*_*din 8

现在在2018年,标准的Serilog.Sinks.FileNuGet软件包支持滚动:

.WriteTo.File(@"e:\logs\skilliam.log", rollingInterval: RollingInterval.Day,
    rollOnFileSizeLimit: true, fileSizeLimitBytes: 123456);
Run Code Online (Sandbox Code Playgroud)


cod*_*her 6

以下是在 asp.net MVC 4/5 应用程序中将 Serilog 与 web.config 一起使用的方法。

在您的 web.config 中添加以下内容:

<add key="serilog:minimum-level" value="Information" />
<add key="serilog:minimum-level:override:Microsoft" value="Information" />
<add key="serilog:minimum-level:override:System" value="Information" />
<add key="serilog:using:RollingFile" value="Serilog.Sinks.RollingFile" />
<add key="serilog:write-to:RollingFile.pathFormat" value="./Logs/log-{Date}.txt" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" />
<add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />
Run Code Online (Sandbox Code Playgroud)

然后在Application_Startglobal.asax中添加以下内容:

// Get application base directory
string basedir = AppDomain.CurrentDomain.BaseDirectory;

// Setup Serilog for logging
Log.Logger = new LoggerConfiguration()
            .ReadFrom.AppSettings()
            .WriteTo.RollingFile(basedir + "/Logs/log-{Date}.txt")
            .CreateLogger();
Run Code Online (Sandbox Code Playgroud)


Ste*_*rga 6

要启用多进程共享日志文件,请将共享设置为 true:

在代码中

.WriteTo.RollingFile("log-{Date}.txt", shared: true)
Run Code Online (Sandbox Code Playgroud)

或者在 web.config 中

<add key="serilog:write-to:RollingFile.shared" value="true" />
Run Code Online (Sandbox Code Playgroud)


Die*_*ego 5

要使用相同的文件,您必须添加 shared: true

.WriteTo.RollingFile("log-{Date}.txt", 共享: true)