如何在 log4j2 中配置 null appender
How to configure null appender in log4j2
Log4j 1.* 有一个 null appender class,但我找不到 log4j 2 中的等效项。有吗?如何在 log4j2.xml 中配置空附加程序?
NullAppendar 基本上是一个(几乎)empty implementation of the Appender interface, using the AppenderSkeleton as a base class. Doing the same in Log4j2 is trivial, but you'll need some boilerplate code to make it work, see the Apache documentation on 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);
}
}
使用 CountingNoOp 附加程序。
<Appenders>
<CountingNoOp name="DEV_NULL" />
</Appenders>
从 Log4j2 版本 2.7 开始,有一个 NullAppender class。早期版本没有它。它在配置文件中使用的名称是 "Null"。它可以像这样添加到 Appenders 列表中:
<Appenders>
<Null name="arbritrary_name" />
</Appenders>
Log4j 1.* 有一个 null appender class,但我找不到 log4j 2 中的等效项。有吗?如何在 log4j2.xml 中配置空附加程序?
NullAppendar 基本上是一个(几乎)empty implementation of the Appender interface, using the AppenderSkeleton as a base class. Doing the same in Log4j2 is trivial, but you'll need some boilerplate code to make it work, see the Apache documentation on 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);
}
}
使用 CountingNoOp 附加程序。
<Appenders>
<CountingNoOp name="DEV_NULL" />
</Appenders>
从 Log4j2 版本 2.7 开始,有一个 NullAppender class。早期版本没有它。它在配置文件中使用的名称是 "Null"。它可以像这样添加到 Appenders 列表中:
<Appenders>
<Null name="arbritrary_name" />
</Appenders>