当前位置: 首页 > 知识库问答 >
问题:

如何筛选log4j2中没有设置标记?

糜昌胤
2023-03-14

log4j2配置的筛选器部分可能与下面的示例类似,但NoMarkerFilter语句应该捕获未设置标记的情况。

<Filters>
        <MarkerFilter marker="SQL_UPDATE" onMatch="ACCEPT" onMismatch="NEUTRAL" />
        <NoMarkerFilter onMatch="ACCEPT" onMismatch="DENY" />
</Filters>

共有1个答案

郎羽
2023-03-14

更新-2019年7月

NoMarkerFilter作为2.12.0版的log4j的一部分提供

有了这个,下面的配置就可以工作了:

<Filters>
        <MarkerFilter marker="SQL_UPDATE" onMatch="ACCEPT" onMismatch="NEUTRAL" />
        <NoMarkerFilter onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
@Plugin(name = "NoMarkerFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
public class NoMarkerFilter extends AbstractFilter {


  private NoMarkerFilter(final Result onMatch, final Result onMismatch) {
    super(onMatch, onMismatch);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object... params) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
                       final Throwable t) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
                       final Throwable t) {
    return filter(marker);
  }

  @Override
  public Result filter(final LogEvent event) {
    return filter(event.getMarker());
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3,
                       final Object p4) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3,
                       final Object p4, final Object p5) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3,
                       final Object p4, final Object p5, final Object p6) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3,
                       final Object p4, final Object p5, final Object p6,
                       final Object p7) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3,
                       final Object p4, final Object p5, final Object p6,
                       final Object p7, final Object p8) {
    return filter(marker);
  }

  @Override
  public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                       final Object p0, final Object p1, final Object p2, final Object p3,
                       final Object p4, final Object p5, final Object p6,
                       final Object p7, final Object p8, final Object p9) {
    return filter(marker);
  }

  private Result filter(final Marker marker) {
    return null == marker ? onMatch : onMismatch;
  }

  /**
   * Create the NoMarkerFilter.
   *
   * @param match    The action to take if a match occurs.
   * @param mismatch The action to take if no match occurs.
   * @return A NoMarkerFilter.
   */
  @PluginFactory
  public static NoMarkerFilter createFilter(
      @PluginAttribute("onMatch") final Result match,
      @PluginAttribute("onMismatch") final Result mismatch) {
    return new NoMarkerFilter(match, mismatch);
  }
}
<Filters>
        <MarkerFilter marker="SQL_UPDATE" onMatch="ACCEPT" onMismatch="NEUTRAL" />
        <NoMarkerFilter onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
 类似资料:
  • 我在lexer语法文件中编写并用antlr4编译它。上面说 看来“filter”只适用于ANTLR3 我查了wikihttp://www.antlr.org/wiki/display/antlr4/options,没有找到答案。“filter”关键字也不在源文件https://github.com/antlr/antlr4/blob/master/tool/src/org/antlr/v4/too

  • 我已经用这个方法在选择之前查看照片了。请注意照片。

  • 我试图从管理各种Tomcat实例的应用程序生命周期的第三方工具的正常应用程序日志中筛选出启动(/关闭)事件。基础是(2.12.1),中使用,用于简单的追加器(下面的示例进行了大量简化,包括硬编码值): 相应的记录器如下所示: 当我启动实例时,将创建两个日志文件。但是,只有应用程序日志文件(application appender)包含条目,其中包括我感兴趣的要过滤掉的条目: 有什么想法,如何调试,

  • 可能重复: 设置没有值的属性 有时,在处理HTML时,需要在不使用任何值的情况下设置DOM元素的属性,例如,请参见此处的所选参数: 超文本标记语言文档中的这种属性并不罕见。例如,下面列出了可能的属性: 已选中 已选择 <代码>必需 多个 禁用 等等 如何使用Javascript和/或jQuery在运行时设置没有值的属性?

  • 也许,我搜索了所有的互联网,但我一定错过了什么。 我根据文档配置Log4j2和Commons日志。我添加了,但其配置对应用程序输出没有影响。我看Log4j没有读这个文件。这是我的配置: pom.xml \src\main\资源\log4j2.xml 在任何类中-例如A类 应用程序具有函数,因此可以由IDE或mvn exec:java运行。 问题: 日志记录正在工作-但使用默认方式。 正如您在文件中

  • 我在Scala上有一个项目。我使用这个库记录https://github.com/typesafehub/scala-logging 我创建记录器 和两个标记 为什么marker和marker2可见,为什么DENY不起作用? 如何排除两个标记? 如何只排除一个标记?