Serilog 异常时更改日志级别
Serilog Change Log Level on Exception
如果日志包含异常,是否可以通过 Serilog/Seq 配置更改最低日志记录级别?我的用例是 Microsoft JSON 输入格式化程序,它在调试级别记录,但如果输入格式有问题,它会抛出一个异常,在调试级别捕获并记录。无论级别如何,我都想记录任何附加异常的内容。
编辑:
需要澄清的是,在生产中,我们只在信息级别或更高级别记录我们的消息,如果它来自框架代码(系统和 Microsoft 名称空间),则发出警告。寻找一种无论消息级别如何都可以记录异常的方法。
这在 Serilog 中是可能的,但有一些主要缺点,即 所有 调试级事件必须首先构造,然后才过滤掉不需要的事件。在大多数情况下,这可能开销太大,最好将记录异常的事件级别更改为 Information
或更高。
不过要做到这一点:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug() // emit the events
.Filter.ByIncludingOnly(le => (int)le.Level >= (int)LogEventLevel.Information ||
le.Exception != null)
.CreateLogger();
如果日志包含异常,是否可以通过 Serilog/Seq 配置更改最低日志记录级别?我的用例是 Microsoft JSON 输入格式化程序,它在调试级别记录,但如果输入格式有问题,它会抛出一个异常,在调试级别捕获并记录。无论级别如何,我都想记录任何附加异常的内容。
编辑: 需要澄清的是,在生产中,我们只在信息级别或更高级别记录我们的消息,如果它来自框架代码(系统和 Microsoft 名称空间),则发出警告。寻找一种无论消息级别如何都可以记录异常的方法。
这在 Serilog 中是可能的,但有一些主要缺点,即 所有 调试级事件必须首先构造,然后才过滤掉不需要的事件。在大多数情况下,这可能开销太大,最好将记录异常的事件级别更改为 Information
或更高。
不过要做到这一点:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug() // emit the events
.Filter.ByIncludingOnly(le => (int)le.Level >= (int)LogEventLevel.Information ||
le.Exception != null)
.CreateLogger();