java - 如何在log4j2中打印Object参数

标签 java log4j2

我是 log4j2 的新手。这是场景 我正在追踪它,如下

log.trace("some message",object);

现在我想使用控制台附加器打印对象。我的附加器看起来像这样。

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

更新

似乎无法将对象自定义记录到与下面答案不同的字段。

最佳答案

您想将对象打印为日志消息的一部分吗?然后就这样做:

log.trace("some message {}", object);

这实际上与:

log.trace("some message " + object);

但它更好,因为 String 连接仅在启用所使用的级别(本例中为跟踪)(惰性求值)时才会发生。

关于java - 如何在log4j2中打印Object参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33403651/

相关文章:

linux - 当应用程序在 Linux 中通过 crontab 运行时,Log4j2 日志记录不起作用

java - 我正在从 log4j.xml 迁移到 log4j2.xml 。如何在 log4j2.xml 中的 RollingAppender 中设置 <param name ="Append"value ="true"/>

Java:使用哪个配置框架?

java - 尝试添加库后出错

spring-boot - Log4J2 在很多层面上都无法在 Spring Boot 上工作

java - log4j2.properties 将记录器级别设置为许多包

java - Log4j2:没有可用的 log4j-web 模块

java - 内存不足 : GC limit exceeded while creating XSSFWorkBook from InputStream

java - 为回合制游戏服务器选择哪种协议(protocol)

java - 在Windows中获取用户的组名