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
6
A
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
Można użyć dowolnego innego 'Appender' i po prostu dodać' Filter' że nie pasuje, na przykład ' " Do czego dokładnie tego potrzebujesz? –
To nie jest prawdziwy aplikant. –