【问题标题】:How to add change the log level for a log4j appender programmaticaly?如何以编程方式添加更改 log4j appender 的日志级别?
【发布时间】:2019-05-06 21:36:57
【问题描述】:

我添加了一个 Sentry 附加程序来记录我的错误消息。现在 Sentry 会记录所有内容。是否可以设置 appender 的 Log 级别?

我这样添加了 Sentry Appender:

private static void addSentryLogger() {
  LoggerContext lc = (LoggerContext) LogManager.getContext(false);

  RegexFilter regexFilter = null;
  try {
    regexFilter = RegexFilter.createFilter("^(.*?([E][R][R][O][R]|[W][A][R][N])[^$]*)$", null, true, Filter.Result.ACCEPT, null);
  } catch (IllegalAccessException e) {
    System.out.println("Error with regexFilter");
  }

  SentryAppender sentryAppender = SentryAppender.createAppender("Sentry", regexFilter);
  sentryAppender.start();
  lc.getConfiguration().addAppender(sentryAppender);

  lc.getRootLogger().addAppender(lc.getConfiguration()
    .getAppender(sentryAppender.getName()));
  lc.updateLoggers();
}

正则表达式没问题,但我想将其用于更详细的规范。所以我想使用错误级别来过滤错误和警告

希望有人能帮忙。

【问题讨论】:

    标签: java log4j2 sentry


    【解决方案1】:

    使用下面的

    ((AppenderSkeleton)Logger.getRootLogger().getAppender("Sentry")).setThreshold(Level.WARN));
    

    【讨论】:

    • 没有 AppenderSkeleton 和 getRootLogger 可用。您使用了哪些进口产品?
    • 您不能在现有的sentryAppender 对象上调用.setThreshold(Level.WARN)) 吗?
    • 不,它是 log4j2 也许这就是它不可能的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2018-05-07
    • 2010-10-17
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多