完成 "Scala Logging" 个示例
Complete "Scala Logging" Example
我正在尝试使用 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"
我的 class 基本上是这样的:
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>
您很接近,但是您必须在 com.typesafe.scalalogging
中的 Logger
同伴的 apply
方法中使用 SLF4J 记录器声明一个 logger
实例。在您的 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.")
// ...
}
Here 是对 LoggerFactory 的引用。希望对您有所帮助!
IIRC 它将默认从信息级别开始打印消息。要更改此设置,您需要将 logback.xml
文件放入 src/main/resources
(或使用 -Dlogback.configurationFile=/path/to/config.xml
JVM 参数)。请参阅 Logback 文档中的 Configuration 章节。
对于那些仍在为如何在 sbt 项目中使用 scala 日志记录而苦苦挣扎的人。他们只需要遵循以下步骤:
在你的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>
扩展您的 Scala class 或具有特征 LazyLogging
:
的对象
import com.typesafe.scalalogging.slf4j.LazyLogging
class MyClass extends LazyLogging {
logger.debug("This is very convenient ;-)")
}
完成了。
P.S:请注意,logger 已经是 trait LazyLogging 的成员,因此您无需创建它(如上例所示)
我正在尝试使用 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"
我的 class 基本上是这样的:
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>
您很接近,但是您必须在 com.typesafe.scalalogging
中的 Logger
同伴的 apply
方法中使用 SLF4J 记录器声明一个 logger
实例。在您的 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.")
// ...
}
Here 是对 LoggerFactory 的引用。希望对您有所帮助!
IIRC 它将默认从信息级别开始打印消息。要更改此设置,您需要将 logback.xml
文件放入 src/main/resources
(或使用 -Dlogback.configurationFile=/path/to/config.xml
JVM 参数)。请参阅 Logback 文档中的 Configuration 章节。
对于那些仍在为如何在 sbt 项目中使用 scala 日志记录而苦苦挣扎的人。他们只需要遵循以下步骤:
在你的
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>
扩展您的 Scala class 或具有特征
的对象LazyLogging
:import com.typesafe.scalalogging.slf4j.LazyLogging class MyClass extends LazyLogging { logger.debug("This is very convenient ;-)") }
完成了。
P.S:请注意,logger 已经是 trait LazyLogging 的成员,因此您无需创建它(如上例所示)