ServiceStack 结构化日志记录

ServiceStack structured logging

如何在使用时获得结构化日志记录,例如带有 Servicestack 的 Serilog?

Serilog 和 NLog 的示例都具有 Log.Information("Hello World from {FirstName}", "Thomas"); 形式,我在 ServiceStack 中找不到与之匹配的方法签名。

查看 enhanced Serilog Logging APIs whilst this existing Whosebug answer 的日志记录文档显示了 Serilog Enrichers 示例。

SerilogLoggerTests.cs 显示了使用 Serilog 的不同示例:

var log = new SerilogLogger(GetType());

const string message = "Error Message";
const string messageFormat = "Message Format: message: {0}, exception: {1}";

var ex = new Exception();
log.Info(message);
log.Info(message, ex);
log.InfoFormat(messageFormat, message, ex.Message);
log.Info(ex, messageFormat, messageFormat, ex);

以及一个带有自定义属性的日志上下文示例:

var log = new SerilogLogger(new LoggerConfiguration()
    .WriteTo.Sink(sink).CreateLogger());

var messageTemplate = "Testing adding {prop2} props";
log.ForContext("prop", "value").InfoFormat(messageTemplate, "awesome");

还有 PushProperty() API 用于分配自定义属性,请参阅 Serilog's Enrichment docs 示例。