我们发现restrictedToMinimumLevelserilog中存在属性,但它是否也支持最大级别属性?
之前我们使用过NLog具有最小和最大日志记录级别(https://github.com/NLog/NLog/wiki/Configuration-file#rules)。
我们希望从debug to information控制台、information to warning文件和errors数据库中登录。
我们可以使用 appsettings.json 来做到这一点吗?
我们正在使用 dotnet core 2.2。
任何帮助是极大的赞赏。
答案有点晚了,但我只是有同样的问题并找到了解决方案。也许这对像我这样的人会有帮助。
在这种情况下,Serilog.Expressions可以使用子记录器与包的组合。Sublogger 是主记录器中的一个新记录器,您可以为其设置过滤规则。例如,此配置表示,Debug和Information日志将写入控制台接收器,并且Information和Warning级别的日志将写入 SqlServer 接收器。
这是表达式语言的参考:https ://github.com/serilog/serilog-expressions#language-reference 。
JSON 配置将如下所示:
{
"Serilog": {
//... serilog config
"WriteTo": [
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@l in ['Debug', 'Information']"
}
}
],
"WriteTo": [
{
"Name": "Console",
"Args": {
//Console sink config
}
}
],
}
}
},
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@l in ['Information', 'Warning']"
}
}
],
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
//MSSqlServer sink config
}
}
]
Run Code Online (Sandbox Code Playgroud)