我设置了一个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文档并找不到答案......在生产环境中也很难看到类名。谢谢你的帮助!
答案 0 :(得分:2)
根据doc,要获取班级名称,您应该使用您的模式%class{0}
答案 1 :(得分: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] application:MyController :: get:82 - 我的日志消息
答案 2 :(得分:-2)
在ch.qos.logback.classic中的PatternLayout类的私有实现中似乎存在问题。 的PatternLayout。尝试使用标准的log4j实现。你如何获得logger实例,如下所示:private static Logger logger = Logger.getLogger (MyClass.class); ?
答案 3 :(得分:-3)
请仔细阅读docs。此外,play2使用logback作为日志记录引擎,因此请在Logback的official web site.
上阅读更多相关信息