Log4j 1. * ha un null appender class, ma non ho trovato l'equivalente in log4j 2. È presente? Come si configura un appender null in log4j2.xml?Come configurare l'appender nullo in log4j2
risposta
Esiste una classe NullAppender a partire da Log4j2 versione 2.7. Le versioni precedenti non ce l'avevano. Il nome che usa nel file di configurazione è "Null". Può essere aggiunto all'elenco appenders in questo modo:
<Appenders>
<Null name="arbritrary_name" />
</Appenders>
NullAppendar era fondamentalmente un (quasi) empty implementation dell'interfaccia di Appender, utilizzando lo AppenderSkeleton come classe base. Fare lo stesso in Log4j2 è banale, ma avrai bisogno di qualche codice per farlo funzionare, vedi la documentazione di Apache al numero 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);
}
}
Utilizzare l'appender CountingNoOp.
<Appenders>
<CountingNoOp name="DEV_NULL" />
</Appenders>
Avvio della versione 2.6.1 – mcoolive
è possibile utilizzare qualsiasi altro 'Appender' e semplicemente aggiungere un' filter' che non si adatta, ad esempio, un ' ' A cosa ti serve esattamente? –
Questo non è un vero appender nullo. –