Typesafeの Scala Logging を使用しようとしていますが、デバッグメッセージを出力できませんでした。 Scalaロギングがデフォルトの画面にデバッグメッセージを出力することを期待していますが、機能しません。完全な例は、何を変更すべきかが非常に役立つか、具体的なアドバイスになるでしょう。 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を発見しましたが、どのモジュールがそれをインストールしたか、および関連があるかどうかはわかりません。ログレベルを「デバッグ」に変更しましたが、効果はありません。
<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>
IIRCでは、デフォルトで情報レベルからメッセージを出力します。これを変更するには、logback.xml
ファイルをsrc/main/resources
に入れる(または-Dlogback.configurationFile=/path/to/config.xml
JVMパラメーターを使用する)必要があります。 Logbackドキュメントの Configuration の章を参照してください。
Sbtプロジェクトでscala-loggingを機能させる方法にまだ苦労している人のために。次の手順に従うだけです。
これらの2つの依存関係を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
を使用して、Scalaクラスまたはオブジェクトを拡張します。
import com.typesafe.scalalogging.slf4j.LazyLogging
class MyClass extends LazyLogging {
logger.debug("This is very convenient ;-)")
}
終わった。
追記:loggerはすでに特性LazyLoggingのメンバーであるため、作成する必要はありません(上記の例のように)
近いですが、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.")
// ...
}
ここ はLoggerFactoryのリファレンスです。それが役に立てば幸い!