我试图使用KeyValuePairs配置SeriLog,如下所示:
var config = new LoggerConfiguration().ReadFrom.KeyValuePairs(cfg.SeriLogSettings);
其中SeriLogSettings的类型为Dictionary<string, string>
从该yaml读取键值对
minimum-level: 'Verbose'
using:_CommandLineSettingsSerilogFullNetFx: 'Serilog.FullNetFx'
write-to:ColoredConsole.outputTemplate: '{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {CorrelationId}: {Message}{NewLine}{Exception}'
write-to:RollingFile.pathFormat: '..\..\LogsTests-{Date}.log'
write-to:RollingFile.outputTemplate: '{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {CorrelationId}: {Message}{NewLine}{Exception}'
enrich:FromLogContext: ''
然而,在ColoredConsole中,当像这样记录时,没有填写CorrelationId(但是占位符出现)
using (LogContext.PushProperty("CorrelationId", "YamlTest"))
{ logger.Information("Yaml config test"); }
在代码中配置时工作正常 而且对于RollingFile,不会拾取outputTemplate,并且{CorrelationId}不会出现在日志文件中(甚至不是占位符)
任何人都有使用可能有建议的KeyValuePairs的经验