提问人:GuyWhoLikesPlums 提问时间:1/9/2022 最后编辑:Prasad TelkikarGuyWhoLikesPlums 更新时间:1/9/2022 访问量:1386
如何通过 Serilog 获取日志级别
How to obtain log level through Serilog
问:
有没有办法获取特定于日志的日志事件级别?例如,如果我登录
Log.Information("This is information")
可以打印出一个值或以某种方式获得日志的级别吗?
答:
1赞
Luiz Lelis
1/9/2022
#1
也许,您需要的是 Serilog 格式化输出。该功能使您能够根据需要配置日志输出。例如,如果要将级别和消息放在日志中,可以执行以下操作(请记住在项目中添加 Serilog Sinks 依赖项,在本例中为 Console):
using Serilog;
namespace SerilogExample
{
class Program
{
static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console(outputTemplate:
"[{Timestamp:HH:mm:ss}] {Level:}: {Message:lj}{NewLine}{Exception}")
.CreateLogger();
Log.Information("This is information");
}
}
}
上面的示例将打印如下:stdout
[00:30:35] Information: This is information
您还可以将自定义格式化程序用于特定工具引入(例如)。ElasticsearchJsonFormatter
评论
0赞
GuyWhoLikesPlums
1/9/2022
我想我想做的是从日志本身获取日志级别,然后将其与通过配置文件设置的特定应用程序最低日志级别进行比较。我正在通过此路由,因为我不是直接登录到任何特定的接收器,而是登录到过滤掉日志的中间人类型的服务器。
0赞
Luiz Lelis
1/11/2022
您好@GuyWhoLikesPlums,感谢您的回复。您可以遵循两种方法:1 - 直接在应用程序中过滤日志级别(不需要中间件):github.com/serilog/serilog/wiki/...;2 - 如果你想直接在中间件中应用过滤器,你可以配置我上面提到的,例如JSON格式(每个日志将具有相同的格式和字段)。中间件将负责反序列化日志并根据需要对其进行筛选(例如,可以按日志级别进行筛选)。outputTemplate
评论
Log.Information
global::Serilog.Log.Logger.Information
LoggerConfiguration
MinimumLevel
Filter.ByExcluding(...)