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

Passing an MessageTemplate String to a Serilog Wrapper

我有一个问题。

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