【问题标题】:How to add external packages logs to current project log files/rules in Nlog如何将外部包日志添加到 Nlog 中的当前项目日志文件/规则
【发布时间】:2023-01-24 01:40:30
【问题描述】:

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

{
    "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


    【解决方案1】:

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

    {
        "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"
      }
    

    我认为它没有我希望的那么漂亮,但它确实有效?

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

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加更多详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写出好的答案的信息in the help center
    【解决方案2】:

    也许你只需要添加"final": true,这样它就不会达到最后一个包罗万象的规则:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多