小编Guy*_*ood的帖子

Serilog:如何进一步增强 appsettings.json 中的过滤器表达式?

我有两个带有 Serilog 的记录器,它们保存到不同的文件。我想通过 appsettings.json 而不是代码创建记录器。

当我通过Startup.cs配置创建记录器时,我会得到更具体的日志,我更喜欢这种方式,因为它更清晰,并且允许其他人检查日志并了解正在发生的情况,而无需太多的技术知识。但是,我想将其应用于应用程序设置,以便我可以将代码迁移到我可能使用的任何其他项目。 仅供参考:我不想覆盖日志级别。

例如,我使用代码创建记录器,如下所示:

Log.Logger = new LoggerConfiguration()
    .WriteTo.ColoredConsole()
    .WriteTo.Logger(lc => lc
    .Filter.ByExcluding(Matching.FromSource("Microsoft"))
    .WriteTo.File("Serilogs/Program_log_.txt", rollingInterval: RollingInterval.Day)
    .MinimumLevel.Information()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information))

    .WriteTo.Logger(lc => lc
    .Filter.ByIncludingOnly(Matching.FromSource("Microsoft"))
    .WriteTo.File("Serilogs/ServerTrace_log_.txt", rollingInterval: RollingInterval.Day)
    .MinimumLevel.Information()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information))

    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

这会生成两个单独的输出,我喜欢它们的格式:: File 1可读的自定义日志:

2019-01-18 11:18:09.873 +00:00 [INF] //Some custom log information
2019-01-18 11:18:09.875 +00:00 [INF] //Some more custom log information
Run Code Online (Sandbox Code Playgroud)

File 2:堆栈跟踪,服务器信息:

2019-01-18 11:17:56.378 +00:00 [INF] User profile is available. Using '//A path' as key repository and Windows DPAPI to encrypt keys …
Run Code Online (Sandbox Code Playgroud)

c# serilog .net-core

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net-core ×1

c# ×1

serilog ×1