2015-08-27 92 views
6

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

+0

你可以使用任何其他'Appender',只需添加一個'Filter'從不符合,例如''你到底需要什麼? –

+0

這不是一個真正的空appender。 –

回答

3

從Log4j2版本2.7起,有一個NullAppender類。早期版本沒有它。它在配置文件中使用的名稱是「Null」。它可以被添加到列表的Appender像這樣:

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

NullAppendar基本上是Appender接口的(幾乎)empty implementation,使用AppenderSkeleton作爲基類。在Log4j2中做同樣的事情是微不足道的,但您需要一些樣板代碼才能使其工作,請參閱custom appenders上的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); 
    } 

} 
2

使用CountingNoOp appender。

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

從2.6.1版開始 – mcoolive