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(...)
是否有类似的方法
例如,我需要在重新启动服务的情况下更改日志 fileSizeLimitBytes
或 rollingInterval
的配置。这可以用 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。
在 asp.net 核心中使用 Serilog,您可以使用
在 runtine 中更改日志级别MinimumLevel.ControlledBy(SeriLogLevelSwitch).
LoggerConfiguration().WriteTo.File(...)
例如,我需要在重新启动服务的情况下更改日志 fileSizeLimitBytes
或 rollingInterval
的配置。这可以用 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。