【发布时间】:2017-12-02 17:48:20
【问题描述】:
我正在尝试在 article 中提到的 log4j 中创建自定义布局。
我创建了一个简单的CustomLayout,如下所示 -
public class CustomLayout extends PatternLayout {
public String format(LoggingEvent event)
{
return "Custom Layout";
}
}
一个简单的自定义 appender 如下所示
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 年夏天停止使用。众所周知,Java 9 中的 Log4j 1.2 已损坏。请迁移到 Log4j2。在 Log4j2 中创建自定义组件更容易且记录得更好。