我是log4j2的新手。这是场景 我正在跟踪它如下
log.trace("some message",object);
现在我想使用Console appender打印Object。我的appender看起来像这样。
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
但是现在只打印。
"16:40:30.300 [main] TRACE com.xxx.skip.webservice.RunService - test"
但是如果“Object”是实例Throwable,它可以正常工作,但不适用于任何其他对象。 请指出正确的方向。
更新
似乎无法将对象自定义记录到以下答案中的其他字段。
答案 0 :(得分:5)
您想要将对象打印为日志消息的一部分吗?然后就这样做:
log.trace("some message {}", object);
这实际上与:
相同log.trace("some message " + object);
但它更好,因为String
连接仅在使用的级别(在这种情况下为trace)启用时才会发生(延迟评估)。
答案 1 :(得分:1)
Log4j2是一种日志记录解决方案。记录解决方案将文本消息写入appender - 文件,标准输出,网络位置等。记录对象没有意义。如果您确实确定这是您想要做的,那么请在对象中添加一个有意义的toString
并记录下来。
log.trace("some message", object.toString());
如果您尝试序列化您的对象,则应该采用不同的方法,因为Log4j2不是正确的工具。