我想在Loggly中使用Serilog消息模板。
我已使用Serilog配置Loggly到我的应用程序中。
var logglySettings = new LogglySettings();
configuration.GetSection("Serilog:Loggly").Bind(logglySettings);
this.SetupLogglyConfiguration(logglySettings);
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
但是我无法将多个属性发送到loggly.com
例如我要使用:
public void Error<T, T1>(string message, T property0, T1 property1)
{
Log.Error(message, property0, property1);
}
我能够发送多个属性
return this.logger.Error("Could not save data.", new { Exception = ex, RequestData = requestData });
但这不适合Serilog模式。
我想将Serilog记录模式用作:
public void Error<T, T1>(string message, T property0, T1 property1)
答案 0 :(得分:2)
您需要提供一个消息模板,其中包含要记录的所有属性,而不仅仅是消息本身,例如
Log.Error("Error while saving {RequestData}: {Exception}", requestData, exception);
由于Log.Error
的显式重载可以接受异常参数,因此建议您改用它,因为这样可以使显示更清晰,并且可以进行更深层次的解构(例如,通过Demystify)。如果您想要的不仅仅是@
表示形式,例如,
ToString()
模板字符来强制深度破坏请求数据。
Log.Error(exception, "Failed to save {@RequestData}", requestData)
或者,如果您不想在消息本身中包含请求数据,则可以将其作为上下文信息添加,例如
Log.ForContext("RequestData", requestData, destructureObjects: true)
.Error(exception, "Could not save data.")