Serilog 中是否有一个选项可以在运行时更改日志文件参数,就像可以更改 LogLevel 一样?

Is there an option in Serilog to change log file parameters in runtime, the same way LogLevel can be changed?

在 asp.net 核心中使用 Serilog,您可以使用

在 runtine 中更改日志级别
MinimumLevel.ControlledBy(SeriLogLevelSwitch).

LoggerConfiguration().WriteTo.File(...)

是否有类似的方法

例如,我需要在重新启动服务的情况下更改日志 fileSizeLimitBytesrollingInterval 的配置。这可以用 Serilog 实现吗?

通过拉入最新的 Serilog.AspNetCore,您会发现一个名为 ReloadableLogger 的 class,它是通过 CreateBootstrapLogger() 构建的扩展方法:

// using Serilog;
var logger = new LoggerConfiguration()
  .WriteTo.File(...)
  .CreateBootstrapLogger();

// Optional but suggested:
Log.Logger = logger;

// Use the logger...

// Change parameters later on:
logger.Reload(lc => lc
  .WriteTo.File(...));

您可能会发现 ASP.NET 核心中 CreateBootstrapLogger()UseSerilog(callback) 之间的某些交互使事情变得有点糟糕;如果您使用此技术,请尝试 UseSerilog().

的无参数版本

ReloadableLogger 才刚刚出现,并且关注的场景略有不同,因此您可能仍需要克服一些尴尬的设置 - YMMV。