将MessageTemplate字符串传递给Serilog包装器



我有一个问题。

我有以下代码(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);