播放框架2.5记录`?`问号而不是行号

时间:2017-01-14 01:09:35

标签: scala logging playframework logback playframework-2.5

我有一个包含所有标准配置的play框架应用程序。我像这样修改logback.xml

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%coloredLevel %logger{15} %L - %message%n%xException{10} </pattern>
    </encoder>
</appender>

我试过而不是%L放在那里%line%class等等 - 所有这些都得到相同的结果,它会在日志消息中输出?,如下所示:

[info] application ? - Checking cart...

我也尝试按照这个问题的接受答案:Scala Play framework: logger pattern for displaying file and line
并将val logger = Logger(this.getClass)放入我的班级。还是一样的结果。有什么办法可以解决吗? build.sbt中指定的Logback版本为2.11

2 个答案:

答案 0 :(得分:2)

我添加includeCallerData并工作

   <appender  name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="STDOUT"/>
        <includeCallerData>true</includeCallerData>
    </appender>

答案 1 :(得分:1)

在您的问题中使用%L在Play 2.4和Play 2.5中都非常适合我(确切版本:2.4.62.5.12)。

但我注意到,在应用程序的build.sbt中明确声明了任何所需的logback版本。

这导致(对于Play 2.5应用程序):

+-com.typesafe.play:play-logback_2.11:2.5.12 [S]
| +-ch.qos.logback:logback-classic:1.1.7
| | +-ch.qos.logback:logback-core:1.1.7
| | +-org.slf4j:slf4j-api:1.7.20 (evicted by: 1.7.21)
| | +-org.slf4j:slf4j-api:1.7.21

(通过sbt-dependency-graph插件的依赖树)

如果您看到不同的logback版本,请尝试删除任何显式依赖项声明,以便在依赖关系树中看到相同的库版本。

希望它有所帮助。