log4j中的自定义模式布局未被使用

我想在此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

有人可以让我知道我做错了吗?

回答:

您需要更改您正在使用的记录器以获取appender的实例。

请参阅下面的代码。

import org.apache.log4j.Logger; 

/**

* Hello world!

*

*/

public class HelloLogger {

private static final Logger logger = Logger.getLogger(HelloLogger.class);

public static void main(String[] args)

{

String s = "Woo";

String s1 = "huhu";

logger.error("Hello "+s+". Are u in "+s1+" ");

}

}

输出如下。

从Appender Hello Woo记录。你在huhu堆栈

我建议使用log4j2而不是Log4j,因为你可以使用它来进行异步日志记录,这将有助于提高性能。

以上是 log4j中的自定义模式布局未被使用 的全部内容, 来源链接: utcz.com/qa/257552.html

回到顶部