我有一些规则,记录他们的项目
{
"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