gpt4 book ai didi

c# - 如何在 loggly 中使用 serilog 消息模板

转载 作者:行者123 更新时间:2023-11-30 22:53:10 31 4
gpt4 key购买 nike

我想在 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)

最佳答案

您需要提供一个消息模板,其中包含您要记录的所有属性,而不仅仅是消息本身,例如

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.")

关于c# - 如何在 loggly 中使用 serilog 消息模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57561153/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com