You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NLog进行结构化日志记录时如何添加额外属性?

以下是NLog框架下几种更优雅的额外属性添加方式,按需选择即可:

方式1:链式调用WithProperty(单条日志加属性首选)

NLog原生支持链式调用WithProperty方法直接附加属性,无需手动构造LogEventInfo对象,写法简洁直观,还可以连续追加多个属性:

' 单个额外属性
_Logger.WithProperty("EventId", eventId).Info("This is my message: {MessageId}", messageId)

' 多个额外属性直接链式追加即可
_Logger.WithProperty("EventId", eventId) _
       .WithProperty("Operator", "admin") _
       .Info("This is my message: {MessageId}", messageId)

方式2:使用日志作用域BeginScope(批量加属性首选)

如果同一段代码逻辑内的多条日志都需要附加相同的额外属性,可以用作用域的方式统一添加,作用域内所有日志都会自动带上这些属性,无需逐条设置:

Using _Logger.BeginScope(New With {
    Key .EventId = eventId,
    Key .TraceId = traceId,
    Key .RequestPath = "/api/order/create"
})
    ' 作用域内的所有日志都会自动带上上面3个属性
    _Logger.Info("收到请求,消息ID:{MessageId}", messageId)
    _Logger.Debug("请求参数:{Param}", param)
    _Logger.Info("请求处理完成,耗时:{Cost}ms", costMs)
End Using

方式3:Logger实例固定属性

如果某类属性需要附加到当前Logger实例的所有日志中,可以直接给Logger实例设置固定属性,后续所有通过该实例打印的日志都会自动携带:

_Logger.SetProperty("ServiceName", "OrderService")
' 后续所有该实例打印的日志都会自动带上ServiceName属性
_Logger.Info("This is my message: {MessageId}", messageId)

内容的提问来源于stack exchange,提问作者user3010344

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:48:03