如何获得当前的Serilog MinimumLevel

and*_*ss6 5 serilog asp.net-core

有没有办法从控制器或中间件中Serilog的当前配置中获取最低日志级别?

Nic*_*rdt 8

尽管它是间接的,但是您可以用来IsEnabled逐级检查此级别:

Log.IsEnabled(LogEventLevel.Debug)
Run Code Online (Sandbox Code Playgroud)

对于这些情况,这通常就足够了。如果您确实需要精确的最低级别,则可以LogEventLevel单独尝试各个成员来解决。IsEnabled()速度非常快,因此以这种方式检查几个级别不会在您的性能雷达中显示。

请记住,仍然可以按源上下文覆盖最低级别(即使用MinimumLevel.Override())。

  • 也许`Enum.GetValues(typeof(LogEventLevel))。Cast <LogEventLevel>()。Where(Log.IsEnabled).Min()`?尽管我猜想自定义循环可能会短路。 (2认同)