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



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

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

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

{
"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}写入所有其他日志

也许你只需要添加"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版本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

最新更新