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