繁体   English   中英

如何在log4j2中配置null appender

[英]How to configure null appender in log4j2

Log4j 1. *有一个null appender类 ,但我找不到log4j中的等价物2.是否有一个? 如何在log4j2.xml中配置null appender?

Log4j2版本2.7中有一个NullAppender类。 早期的版本没有它。 它在配置文件中使用的名称是“Null”。 它可以添加到Appenders列表中,如下所示:

<Appenders>
  <Null name="arbritrary_name" />
</Appenders>

使用CountingNoOp appender。

<Appenders>
  <CountingNoOp name="DEV_NULL" />
</Appenders>

NullAppendar基本上是一个(几乎) 的Appender接口实现,使用AppenderSkeleton作为基类。 在Log4j2中执行相同操作很简单,但是您需要一些样板代码才能使其工作,请参阅有关自定义appender的Apache文档。

@Plugin(name = "NullAppender", category = "Core", elementType = "appender", printObject = true)
public class NullAppender extends AbstractAppender {

    private static final long serialVersionUID = -701612541126635333L;

    private NullAppender(String name, Filter filter, Layout<? extends Serializable> layout) {
        super(name, filter, layout);    
    }

    @Override
    public void append(LogEvent event) {
        // do exactly nothing
    }

    // blatantly stolen from the Apache doc, all errors (C) by me
    @PluginFactory
    public static NullAppender createAppender(@PluginAttribute("name") String name,
                                              @PluginElement("Layout") Layout layout,
                                              @PluginElement("Filters") Filter filter) {

        if (name == null) {
            LOGGER.error("No name provided for NullAppender");
            return null;
        }

        if (layout == null) {
            layout = PatternLayout.createDefaultLayout();
        }
        return new NullAppender(name, filter, layout);
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM