2

我设置了一个 logging.xml 文件,如下所示。该文件包括控制台的输出以及每天获取新文件的滚动文件:

<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${application.home}/logs/application.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>${application.home}/logs/application.%d{yyyy-MM-dd}.log</FileNamePattern>
    </rollingPolicy>

    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>
    </layout>
</appender>
<appender name="A1" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%p %d{ISO8601} %c - %m%n</pattern>
    </encoder>
</appender>
<logger name="javax.faces" level="debug" />
<root level="info">
    <appender-ref ref="A1" />
    <appender-ref ref="FILE" />
</root>
</configuration>

我的问题是如何输出类名?我尝试阅读 Play 文档,但找不到答案……在生产环境中也很难看到类名。谢谢您的帮助!

4

4 回答 4

2

根据文档,要获取类名,您应该在您的模式中使用%class{0}

于 2012-06-19T20:01:42.517 回答
1

playframework 使用 slf4j 作为日志引擎,即使在以下表达式之后也不打印类名:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{ISO8601} %-5level [%thread] %logger{36}: %class{0}::%method:%line - %msg%n</pattern>
    </encoder>
</appender>

然而,解决方法是使用:

Logger.underlying().info("我的日志信息");

获取类名和方法以及行号。输出 :

2015-12-22 17:43:49,969 INFO [play-akka.actor.default-dispatcher-30] 应用程序:MyController::get:82 - 我的日志消息

于 2015-12-22T12:20:10.117 回答
-2

ch.qos.logback.classic 中 PatternLayout 类的私有实现似乎有问题。图案布局。尝试使用标准的 log4j 实现。以及如何获取记录器实例,如下所示: private static Logger logger = Logger.getLogger (MyClass.class); ?

于 2012-06-19T04:10:09.927 回答
-3

请仔细阅读文档。play2 也使用 logback 作为日志引擎,所以在 Logback 的官方网站上阅读更多关于它的信息。

于 2012-06-19T04:32:10.727 回答