首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Microsoft.Extensions.Logging可以过滤单个EventID吗?

使用Microsoft.Extensions.Logging可以过滤单个EventID吗?
EN

Stack Overflow用户
提问于 2017-09-14 01:01:51
回答 2查看 968关注 0票数 4

我想生成一个只包含特定EventId (或EventIds)的日志输出的日志文件。支持这样的功能吗?

EN

回答 2

Stack Overflow用户

发布于 2017-09-15 06:51:30

如果将Serilog作为提供程序插入,则可以继续通过Microsoft.Extensions.Logging进行日志记录,但应用Serilog的过滤来限制发送到日志文件的内容。

为此,您需要使用以下Serilog配置:

代码语言:javascript
复制
Log.Logger = new LoggerConfiguration()
    .Filter.ByIncludingOnly("EventId.Id = 9")
    .WriteTo.RollingFile("logs/log-{Date}.txt")
    .CreateLogger();

(其中9是您希望包含的任何事件id。)

可以使用https://github.com/serilog/serilog-aspnetcore插入Serilog,要编译这个示例,还需要安装Serilog.Sinks.RollingFile和Serilog.Filters.Expressions包。

票数 2
EN

Stack Overflow用户

发布于 2021-05-12 20:55:29

如果你想使用appsettings文件配置Serilog,你可以使用如下代码:

代码语言:javascript
复制
"Serilog": {
    "Using": ["Serilog.Sinks.File", "Serilog.Settings.Configuration", "Serilog.Expressions"],
    "MinimumLevel": {
        "Default": "Debug"
    },
    "WriteTo": [{
            "Name": "File",
            "Args": {
                "path": "log.txt",
                "rollingInterval": "Day",
                "retainedFileCountLimit": "120",
                "rollOnFileSizeLimit": "true",
                "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console"
            }
        }
    ],
    "Filter": [{
            "Name": "ByIncludingOnly",
            "Args": {
                "expression": "EventId.Id = 101"
            }
        }
    ]
}

在using字段中,您必须放置要导入的所有Serilog包,然后配置一个用于写入日志的接收器,最后定义一个过滤器。

我几乎花了一个上午的时间来实现这个目标,所以我希望它能对你有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46203166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档