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