使用 Serilog 自定义 LogEventLevel

Custom LogEventLevel with Serilog

我在 .Net 项目中使用 Serilog 和 Seq。我的主要 objective 是记录一些特定的事件。 我想拥有自己的日志事件级别(如“警告”、“详细”、“信息”...)。 但我真的不知道是否有可能让我的自定义日志级别有这个:

private static readonly ILogger Logger = Log.ForContext<MyController>();
        .
        .
        .
Logger.MyCustomLogLevel(....);

可以吗?

Serilog 不支持自定义日志级别。

虽然自定义关卡是不可能的,但假设您想创建(逻辑上)和 Important 关卡,您可以通过以下方式实现接近相同的效果:

static class LoggerExtensions
{
  public static void Important(
    this ILogger logger,
    string messageTemplate,
    params object[] args)
  {
    logger.ForContext("IsImportant", true)
      .Information(messageTemplate, args);
  }
}

用法:

Logger.Important("Hello, {Name}!", "World");

在序列中:

IsImportant = true

或:

select count(*) from stream where IsImportant limit 10