// Add this line before creating a logger
UpdateLogFilePath(configuration);
// This is your existing Serilog logger creation logic
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
UpdateLogFilePath方法的实现:
private static void UpdateLogFilePath(IConfigurationRoot configuration)
{
// A configuration key pattern we are going to look for
string pattern = "^Serilog:WriteTo.*Args:path$";
foreach (var kvp in configuration.AsEnumerable())
{
if (Regex.IsMatch(kvp.Key, pattern, RegexOptions.IgnoreCase)
&& !string.IsNullOrEmpty(kvp.Value))
{
// Format a file path in the logger configuration
configuration[kvp.Key] = string.Format(kvp.Value, DateTime.Now);
}
}
}
2条答案
按热度按时间u3r8eeie1#
配置
Serilog.Sinks.File
接收器,不设置任何滚动周期或大小限制,并在启动时配置日志记录时将时间戳添加到日志文件名中:根据自述文件的滚动策略部分:
同时指定
rollingInterval
和rollOnFileSizeLimit
将导致同时应用这两种策略,而***指定任何一种策略都不会导致所有事件都写入单个文件。***lztngnrs2#
如果有人还在试图找出如何从
appsettings.json
实现这一点,我已经结束了这个解决方案:UpdateLogFilePath
方法的实现:appsettings.json
示例: