2015-08-27 17 views
6

Log4j 1. * ma numer null appender class, ale nie można znaleźć odpowiednika w log4j 2. Czy istnieje? W jaki sposób można skonfigurować null appender w log4j2.xml?Jak skonfigurować aplikację null appender w log4j2

+0

Można użyć dowolnego innego 'Appender' i po prostu dodać' Filter' że nie pasuje, na przykład '" Do czego dokładnie tego potrzebujesz? –

+0

To nie jest prawdziwy aplikant. –

Odpowiedz

3

Istnieje klasa NullAppender od wersji Log4j2 w wersji 2.7. Wcześniejsze wersje go nie posiadały. Nazwa, której używa w pliku konfiguracyjnym, to "Null". Może być dodany do listy Appenders tak:

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

NullAppendar był zasadniczo (prawie) empty implementation interfejsu Appender, przy użyciu AppenderSkeleton jako klasy bazowej. Zrobienie tego samego w Log4j2 jest trywialne, ale będziesz potrzebował jakiegoś kodu standardowego, aby to działało, zobacz dokumentację Apache na custom appenders.

@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

Użyj aplikatora CountingNoOp.

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

Począwszy od wersji 2.6.1 – mcoolive