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 示例。
如何在使用时获得结构化日志记录,例如带有 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 示例。