如何将外部包日志添加到 Nlog 中的当前项目日志文件/规则

问题描述 投票:0回答:2

我有一些规则,记录他们的项目

{
    "logger": "Alpha.*",
    "minLevel": "${configsetting:item=Alpha.LogLevel}",
    "ruleName": "Alpha",
    "writeTo": "fileTarget, consoleTarget"
  },
  {
    "logger": "Beta.*",
    "minLevel": "${configsetting:item=Beta.LogLevel}",
    "ruleName": "Beta",
    "writeTo": "fileTarget, consoleTarget"
  },

现在我在我的解决方案中添加了几个包(如

AB.Common.Exception
),我想将它们的日志添加到项目日志中。

例如,如果包被

Alpha
使用,来自
AB
的日志可能会添加到
"ruleName": "Alpha"
,但不会添加到
"Beta"

有什么办法吗?

问候。

已更新

好的,我最终找到了可能的规则答案

{
    "logger": "Alpha.*",
    "minLevel": "${configsetting:item=Alpha.LogLevel}",
    "ruleName": "Alpha",
    "writeTo": "fileTarget, consoleTarget"
  },
  {
    "logger": "Beta.*",
    "minLevel": "${configsetting:item=Beta.LogLevel}",
    "ruleName": "Beta",
    "writeTo": "fileTarget, consoleTarget"
  },
  {
    "logger": "*",
    "minLevel": "Trace",
    "ruleName": "AB",
    "writeTo": "fileTarget, consoleTarget"
  }

但我想从

${configsetting:item=Alpha.LogLevel}
${configsetting:item=Beta.LogLevel}

设置logLevel
c# .net logging nlog
2个回答
0
投票

好的,我的答案现在看起来像这样

{
    "logger": "Alpha.*",
    "minLevel": "${configsetting:item=Alpha.LogLevel}",
    "ruleName": "Alpha",
    "writeTo": "fileTarget, consoleTarget"
  },
  {
    "logger": "Beta.*",
    "minLevel": "${configsetting:item=Beta.LogLevel}",
    "ruleName": "Beta",
    "writeTo": "fileTarget, consoleTarget"
  },
  {
    "logger": "*",
    "minLevel": "${configsetting:item=Alpha.LogLevel}",
    "ruleName": "ABtoAlpha",
    "writeTo": "fileTarget, consoleTarget"
  },
  {
    "logger": "*",
    "minLevel": "${configsetting:item=Beta.LogLevel}",
    "ruleName": "ABtoBeta",
    "writeTo": "fileTarget, consoleTarget"
  }

我觉得它没有我希望的那么漂亮,但它确实有效😀

Upd:好的,它不像我想要的那样工作 - 它只用 minLevel ${configsetting:item=Alpha.LogLevel} 写所有其他日志


0
投票

也许你只需要添加

"finalMinLevel": "Off"
(与NLog v5一起引入),所以它没有达到最后一个包罗万象的规则:

"rules": [
  {
    "logger": "Alpha.*",
    "minLevel": "${configsetting:item=Alpha.LogLevel}",
    "ruleName": "Alpha",
    "writeTo": "fileTarget, consoleTarget",
    "finalMinLevel": "Off"
  },
  {
    "logger": "Beta.*",
    "minLevel": "${configsetting:item=Beta.LogLevel}",
    "ruleName": "Beta",
    "writeTo": "fileTarget, consoleTarget",
    "finalMinLevel": "Off"
  },
  {
    "logger": "*",
    "minLevel": "Trace",
    "ruleName": "AB",
    "writeTo": "fileTarget, consoleTarget"
  }
]

如果输出总是应该发送到相同的目标,那么只需使用

"finalMinLevel": "${configsetting:item=LogLevel}"
(需要NLog ver.5.1.3或更新版本)就可以简化它

"rules": [
  {
    "logger": "Alpha.*",
    "finalMinLevel": "${configsetting:item=Alpha.LogLevel:whenEmpty=Debug}"
  },
  {
    "logger": "Beta.*",
    "finalMinLevel": "${configsetting:item=Beta.LogLevel:whenEmpty=Debug}"
  },
  {
    "logger": "*",
    "minLevel": "Trace",
    "writeTo": "fileTarget, consoleTarget"
  }
]

另见:https://github.com/NLog/NLog/wiki/Configuration-file#rules

© www.soinside.com 2019 - 2024. All rights reserved.