The*_*his 6 c# logging serilog .net-core
我正在使用Microsoft.Extensions.Logging.ILogger抽象,它提供BeginScope函数,该函数将分层信息预先添加到创建和处理作用域之间的任何日志中.
ms的默认控制台提供程序运行良好,范围很有用.我希望我的Serilog RollingFile接收器也包含这些信息.
配置代码:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Is(LogEventLevel.Debug)
.Enrich.WithThreadId()
.Enrich.WithProcessId()
.Enrich.WithProcessName()
.Enrich.FromLogContext()
.MinimumLevel.Debug()
.WriteTo.RollingFile(pathFormat: "/opt/iqdata/logs/log-{Date}.txt", restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information, retainedFileCountLimit:30, flushToDiskInterval:TimeSpan.FromSeconds(15), shared:true)
.Enrich.WithProperty("process", "Worker")
.CreateLogger();
var loggerFactory = new LoggerFactory().AddSerilog(Log.Logger).AddConsole(includeScopes: true, minLevel: LogLevel.Debug);
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path: "AppSettings.json", optional: false, reloadOnChange: true).Build();
provider = new ServiceCollection()
.AddOptions()
.AddSingleton(loggerFactory)
.BuildServiceProvider();
logger = provider.GetService<ILoggerFactory>().CreateLogger("Worker.Program");
logger.LogDebug("Current directory:{CurrentDirectory}", Directory.GetCurrentDirectory());
Run Code Online (Sandbox Code Playgroud)
那么我需要做什么才能将范围信息写入文件?另外作为奖励我该如何在RollingFile接收器中包含像ProcessName这样的丰富值?
您可以通过设置滚动文件接收器的outputTemplate参数来包含范围。范围属性称为{Scope}。
但是,使用 Serilog 2.5,您可以{Properties}在输出模板中包含范围和任何其他丰富的属性,如下所示。
.WriteTo.RollingFile("log-{Date}.txt",
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message} {Properties}{NewLine}{Exception}")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4372 次 |
| 最近记录: |