我尝试使用Typesafe' Scala Logging但是无法打印任何调试消息。我希望Scala Logging将调试消息打印到默认屏幕,但它不起作用。一个完整的例子非常有用或具体建议改变什么也会很棒。我使用Scala 2.11。这是我做的:
我将依赖项添加到build.sbt:
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
即使我不确定是否需要这样做,我添加了以下内容,但它没有任何区别:
libraryDependencies += "com.typesafe.scala-logging" % "scala-logging-slf4j_2.11" % "2.1.2"
这就是我班级基本上的样子:
import com.typesafe.scalalogging._
class MyClass extends LazyLogging {
// ...
logger.debug("Here goes my debug message.")
// ...
}
我发现了文件./src/main/resources/logback.xml,但我不确定哪个模块安装了它以及它是否相关。我将日志级别更改为" debug"没有效果。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="scala.slick" level="DEBUG"/>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
答案 0 :(得分:44)
对于那些仍然在为你的sbt项目进行scala-logging工作而苦苦挣扎的人。他们只需要遵循以下步骤:
在build.sbt
中添加这两个依赖项:
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
在/ src / main / resources /中创建一个文件 logback.xml ,然后在该文件中粘贴下面提到的内容。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<!-- path to your log file, where you want to store logs -->
<file>/Users/yourusername/test.log</file>
<append>false</append>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
使用特征LazyLogging
:
import com.typesafe.scalalogging.slf4j.LazyLogging
class MyClass extends LazyLogging {
logger.debug("This is very convenient ;-)")
}
已经完成了。
P.S:只有附注记录器已经是特质LazyLogging的成员,因此您不需要创建它(如上例所示)
答案 1 :(得分:9)
IIRC它默认打印从信息级别开始的消息。要更改此设置,您需要将logback.xml
文件放入src/main/resources
(或使用-Dlogback.configurationFile=/path/to/config.xml
JVM参数)。请参阅Logback文档中的Configuration章节。
答案 2 :(得分:2)
您已关闭,但您必须使用logger
方法在apply
中为Logger
个com.typesafe.scalalogging
方法声明一个build.sbt
实例。在libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.10"
包含:
import com.typesafe.scalalogging._
import org.slf4j.LoggerFactory
class MyClass extends LazyLogging {
// ...
val logger = Logger(LoggerFactory.getLogger(this.getClass))
logger.debug("Here goes my debug message.")
// ...
}
然后这将起作用:
{{1}}
Here是LoggerFactory的参考。希望它有所帮助!