我正在尝试使用Typesafe的Scala Logging但无法让它打印任何调试消息.我希望Scala Logging将调试消息打印到默认屏幕,但它不起作用.一个完整的例子非常有用或具体建议改变什么也会很棒.我使用Scala 2.11.这是我做的:
我将依赖项添加到build.sbt:
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
Run Code Online (Sandbox Code Playgroud)
即使我不确定这是否是必需的,我添加了以下行但它没有任何区别:
libraryDependencies += "com.typesafe.scala-logging" % "scala-logging-slf4j_2.11" % "2.1.2"
Run Code Online (Sandbox Code Playgroud)这是我班级基本上的样子:
import com.typesafe.scalalogging._
class MyClass extends LazyLogging {
// ...
logger.debug("Here goes my debug message.")
// ...
}
Run Code Online (Sandbox Code Playgroud)我发现了文件./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>
Run Code Online (Sandbox Code Playgroud)Vin*_*nay 54
对于那些仍然在努力使你的scala-logging在你的sbt项目中工作的人.他们只需要按照以下步骤操作:
在您的build.sbt:中添加这两个依赖项:
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
Run Code Online (Sandbox Code Playgroud)在/ 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>
Run Code Online (Sandbox Code Playgroud)使用特征扩展Scala类或对象LazyLogging:
import com.typesafe.scalalogging.slf4j.LazyLogging
class MyClass extends LazyLogging {
logger.debug("This is very convenient ;-)")
}
Run Code Online (Sandbox Code Playgroud)完成.
PS:只注意记录器已经是特征LazyLogging的成员,所以你不需要创建它(如上例所示)
IIRC默认情况下会打印从信息级别开始的消息.要更改此设置,您需要将logback.xml文件放入src/main/resources(或使用-Dlogback.configurationFile=/path/to/config.xmlJVM参数).请参阅Logback文档中的" 配置"一章.
你靠近,但你必须声明logger中使用SLF4J记录器实例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"
Run Code Online (Sandbox Code Playgroud)
然后这将起作用:
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.")
// ...
}
Run Code Online (Sandbox Code Playgroud)
这是 LoggerFactory 的参考。希望能帮助到你!