Scalalogging在sbt play项目中不能用于记录到stdout

时间:2014-05-26 03:36:05

标签: scala playframework slf4j logback

我的sbt基于这个很棒的答案进行设置:Confused how to setup a multi project sbt project

所以Dependencies.scala添加了:

val scalaLogging = "com.typesafe.scala-logging" %% "scala-logging-slf4j" % scalaLoggingVersion
//val logbackCore = "ch.qos.logback" % "logback-core" % logbackVersion
val logbackClassic = "ch.qos.logback" % "logback-classic" % logbackVersion

(已注释掉logbackCore - 我甚至需要吗?)

已将scalaLogginglogbackClassic添加到commonDependencies(已移除其他库):

val commonDependencies: Seq[ModuleID] = Seq(
    scalaLogging,
    //slf4j,
    //logbackCore,
    logbackClassic
)

同样在/services sbt模块中,将其添加到UserServiceImpl类:

import com.typesafe.scalalogging.slf4j.LazyLogging
class UserServiceImpl (.....) extends SecurityService with LazyLogging {

    def show(.....) {
        logger.trace("UserService.show called")
        logger.debug("UserService.show called")
    }
}

此外,在/ services / resources中,添加了logback.xml

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>
            <pattern>%logger:%line - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

现在当我的播放应用程序启动时,sbt run时没有看到日志,我放入控制器等常规播放日志就好了。

为了更好地衡量,还在logback.xml文件夹中删除了/conf,但仍然没有输出。

我不确定我在这里做错了什么,希望有人可以为我澄清事情。

注意:我正在使用sbt来编译我的项目,但我在IntelliJ中进行了编辑,出于某种原因,IntelliJ没有正确地拾取scala-logging。我的导入以红色突出显示,我在我的UserService上使用的LazyLogging trait关键字&#39;使用LazyLogging&#39;是红色的。我的实际日志语句也像logger.debug这样的单词&#39; logger&#39;是红色的。它没有&#39;似乎解决了这些问题,但是编译得很好。

1 个答案:

答案 0 :(得分:1)

要使回归正常工作,您必须修改application.conf并注释掉所有记录器设置:logger.rootlogger.playlogger.application等。

然后将logback配置放在application-logger.xml目录中名为 /conf 的文件中(名称很重要)。