如何在log4j2中打印Object参数

时间:2015-10-28 23:57:16

标签: java log4j2

我是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,它可以正常工作,但不适用于任何其他对象。 请指出正确的方向。

更新

似乎无法将对象自定义记录到以下答案中的其他字段。

2 个答案:

答案 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不是正确的工具。