我有一个问题。
我有以下代码(c#):
public static void Warning(string log)
{
Serilog.Log.Warning(log);
}
我想传递一个像这样的值:
Serilog.Log.Warning("Checked out order {0} for ${1:C}", order.Id, order.Total);
是否有任何方法可以从Serilog周围的包装器传递插值字符串(及其参数),以便我可以获得拥有MessageTemplate的好处?
假设您想在Log.Warning
周围有一个单一的包装器,那么该方法应该有一个消息和一个参数:
public static void Warning(string msg, params object[] args)
{
Serilog.Log.Warning(msg, args);
}
用法如下:
MyLogWrapper.Warning("Checked out order {0} for ${1:C}", order.Id, order.Total);
考虑在消息中使用命名参数,以充分利用完全结构化的日志记录:
MyLogWrapper.Warning("Checked out order {OrderId} for ${OrderTotal:C}", order.Id, order.Total);