在serilog中,我可以使用以下代码将多个属性推送到日志中。我在一个中间件中这样做是为了从上下文中推送属性。如何使用liblog执行此操作?

using (LogContext.PushProperties(
                        new PropertyEnricher(Constants.CorelationId, id),
                        new PropertyEnricher(Constants.ClientId, context.GetClientId()),
                        new PropertyEnricher(IdentityServiceConstants.RemoteIpAddress, context.Request.RemoteIpAddress)))
                {
                    await next();
                }

在哪里可以找到有关openmappedcontext和nestedcontext的更多信息?

最佳答案

以下方法似乎有效:

var logger = LogProvider.For<SomeType>();

using (LogProvider.OpenMappedContext("Foo", "12"))
using (LogProvider.OpenMappedContext("Bar", "34"))
using (LogProvider.OpenMappedContext("Last", "56"))
{
    logger.InfoFormat("testing {somePlaceholder}", 78);
}

关于OpenAppedContext和OpenNestedContext的使用,似乎没有太多的文档。但是,liblog src代码似乎只是在幕后吸收pushproperty方法,以便在openmappedcontext中使用。

10-07 16:49