log4j2를 사용하여 등록 정보 파일에 대해 다음을 어떻게 작성할 수 있습니까?이 두 log4j 줄을 log4j2로 변환하는 방법은 무엇입니까?
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.null=org.apache.log4j.varia.NullAppender
log4j2를 사용하여 등록 정보 파일에 대해 다음을 어떻게 작성할 수 있습니까?이 두 log4j 줄을 log4j2로 변환하는 방법은 무엇입니까?
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.null=org.apache.log4j.varia.NullAppender
NullAppender를 플러그인으로 구현할 수 있습니다.
플러그인 구현은 다음과 같다 :
package myPlugins;
@Plugin(name = "NullAppenderDemo", category = "Core", elementType = "appender", printObject = true)
public classNullAppenderDemo extends AbstractAppender {
private static final long serialVersionUID = 1L;
protected NullAppenderDemo(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) {
super(name, filter, layout, ignoreExceptions);
}
@Override
public void append(LogEvent event) {
// Nothing is done here !!!
}
@PluginFactory
public static NullAppender createAppender(
@PluginAttribute("name") String name,
@PluginAttribute("ignoreExceptions") boolean ignoreExceptions,
@PluginElement("Layout") Layout<? extends Serializable> layout,
@PluginElement("Filters") Filter filter) {
if (name == null) {
LOGGER.error("No name provided for NullAppender");
return null;
}
return new NullAppenderDemo(name, filter, layout, ignoreExceptions);
}
}
가 log4j2 구성에서 플러그인 클래스의 패키지를 지정
<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="myPlugins">
사용 펜더 (나는 특성에 XML 형식을 선호하지만, 당신이 할 수있는 에 따른 매핑, 속성을 선호하는 경우 :
<Appenders>
<NullAppender name="null">
</NullAppender>
<Console name="console">
<PatternLayout>
<pattern>
%d %level{length=2} (%c{1.}.%M:%L) - %m%n
</pattern>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<root level="info">
<appenderRef ref="console" />
</root>
<logger name="nullAppenderPackage" additivity="false">
<appenderRef ref="null" />
</logger>
</Loggers>
그러나 실제로, 당신은 전혀 NullAppender없이 수준 = "해제"와 같은 효과를 가질 수 있습니다
<logger name="nullAppenderPackage" level="off">
</logger>
당신은 자세한 내용 here을 찾을 수 있습니다.
단지 이상하게 생각할 수도 있지만, 모든 피쳐를 필터링하도록 appender를 구성 할 수있을 때 NullAppender가 필요한 이유는 무엇입니까?
어떻게 이것을 .properties 파일에서 수행 할 수 있습니까? –