0
我想在此article中提到的log4j中創建自定義佈局。log4j中的自定義模式佈局未被使用
我創建了一個簡單CustomLayout
像下面 -
public class CustomLayout extends PatternLayout {
public String format(LoggingEvent event)
{
return "Custom Layout";
}
}
一個簡單的自定義添加器看起來像下面
public class DummyAppender extends AppenderSkeleton {
private int port;
private String apiKey;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getApiKey() {
return apiKey;
}
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
public void close() {
}
public boolean requiresLayout() {
return false;
}
@Override
protected void append(LoggingEvent arg0) {
System.out.println("Logging from Appender " + arg0.getMessage() + " stack");
ThrowableInformation t = arg0.getThrowableInformation();
if(t != null) {
System.out.println("Logging from Appender " + Arrays.asList(t.getThrowableStrRep()).size());
}
}
}
log4j.xml
就像下面
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="dummyAppender" class="com.log.DummyAppender">
<param name="Port" value="1234" />
<param name="ApiKey" value="ABCDEGH" />
<layout class="com.log.CustomLayout">
</layout>
</appender>
<root>
<priority value="error" />
<appender-ref ref="dummyAppender" />
</root>
</log4j:configuration>
的主類是像下面
public class HelloLogger {
private static final Logger logger = LoggerFactory.getLogger(HelloLogger.class);
public static void main(String[] args) {
logger.info("Hello World");
logger.error("Hello {}. Are u in {}", "Woo", "huhu", new Exception("huhuh876"));
}
}
運行主類似乎CustomLayout沒有得到使用。
輸出
Logging from Appender Hello Woo. Are u in huhu stack
Logging from Appender 2
有人可以讓我知道我做錯了嗎?
您可以分享您使用的pom.xml或您所使用的依賴項嗎 –
您使用的舊Log4j 1.2在2015年夏季已成爲End of Life。已知Log4j 1.2在Java 9中損壞。請遷移到Log4j2。在Log4j2中創建自定義組件更容易且更好。 –