gpt4 book ai didi

playframework-2.0 - PlayFramework Logback 打印调用者类名

转载 作者:行者123 更新时间:2023-12-02 05:01:42 26 4
gpt4 key购买 nike

我正在使用 Play 2.1 (Java) 和 Play 附带的默认 logback (1.0.7) 记录器。在我的一个 Controller 中,我使用“play.Logger”来打印调试日志消息。尽管在 logger.xml 中提到了“%class”,但并未打印调用者类名。而是打印“play.Logger$ALogger”。我一直调试到 logback 的 ch.qos.logback.classic.spi.CallerData,它将堆栈跟踪作为数组返回以识别调用者类。在数组中,我的调用者 Controller 类位于数组的底部,而顶部是“play.Logger.ALogger”项,这就是“ch.qos. logback.classic.pattern.ClassOfCallerConverter”打印类 name(cda[0].getClassName())

我确实看过其他类似的帖子 herehere但他们似乎没有解决这个问题。

这是我的 XML

<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${application.home}/logs/debug_log.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date - [%level] - from %logger %class in %thread %n%message%n%xException%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${application.home}/logs/debug_log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>

我错过了什么吗?

最佳答案

我最近一直在调查同样的问题,这是我的解决方案:您需要通过添加来设置 includeCallerData 标志

    <includeCallerData>true</includeCallerData>

到你的appender配置。

顺便说一句,如果您正在使用 ch.qos.logback.classic.AsyncAppender,您还必须在那里启用该标志,但一旦这样做,您就不必在任何地方设置它else as AsyncAppender 通过向其中注入(inject)调用者数据来修改日志记录事件。

在我的例子中,向根记录器配置添加一个 NOP appender 就足以使调用者数据随处可用

    <appender name="NOP" class="ch.qos.logback.core.helpers.NOPAppender" />
<appender name="ASYNC.NOP" class="ch.qos.logback.classic.AsyncAppender">
<includeCallerData>true</includeCallerData>
<appender-ref ref="NOP" />
</appender>

<root level="...">
...
<appender-ref ref="ASYNC.NOP" />
</root>

请记住,获取调用者数据可能会对性能产生严重影响,因此我不会在生产中使用它。

关于playframework-2.0 - PlayFramework Logback 打印调用者类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com