我知道一些结构化日志的免费/商业可视化工具,例如 seq、回溯。问题是我不想直接添加为接收器,因为我不希望每个日志记录操作都涉及向日志服务器发送 Http 请求。相反,我想尽快登录到本地文件,同时仍然能够以结构化的方式查看和搜索记录的文件内容。
那么有没有实用的解决方案呢?谢谢。
一种选择是使用文件接收器和Serilog.Formatting.Compact写入文件:
.WriteTo.File(new CompactJsonFormatter(), "log.clef")
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用类似jq或 的方法clef-tool来读取/查询日志,包括结构化数据:
clef -i log.clef --filter="SomeProp > 100"
Run Code Online (Sandbox Code Playgroud)
其中SomeProp > 100是Serilog 过滤器表达式。
Compact Log Viewer 可在 Windows 应用商店免费下载。还可以从此处的 GitHub Repo 下载版本:
https://github.com/warrenbuckley/Compact-Log-Format-Viewer/releases
确保在 Nuget 包中添加 Serilog.Formatting.Compact。
在 Program.cs 内部,如果您有 .net6 + 应用程序(例如 Blazor 服务器端应用程序),您可以添加以下内容来设置 SeriLog :
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.File(new CompactJsonFormatter(), "Logs/log_sweets.json", rollingInterval: RollingInterval.Day)
.CreateLogger();
builder.Logging.ClearProviders();
builder.Logging.AddSerilog();
Run Code Online (Sandbox Code Playgroud)
当我在这里测试时,紧凑日志查看器仅适用于 .json 文件,因此这就是我使用上面的 CompactLogJsonFormatter 的原因
| 归档时间: |
|
| 查看次数: |
6733 次 |
| 最近记录: |