Gradle の依存関係で追加したライブラリが SLF4J というロギングフレームワークを使っていて、
プログラムの実行時にエラーが表示されることがあります。
ここでは、その対処法についてメモしておきます。
Failed to load class
依存関係で追加したライブラリが SLF4J を使っていた場合に、以下のようなエラーを吐くことがあります。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
これは、StaticLoggerBinder を実装したロガーがありませんという意味です。
SLF4J では、使用するログ実装の指定を StaticLoggerBinder というクラスで行なっています。
なので、StaticLoggerBinder を実装したロガー(Log4J)を依存関係に追加しましょう。
dependencies {
compile 'org.slf4j:slf4j-log4j12:1.7.21'
}
WARN No appenders could be found for logger
StatucLoggerBinder を実装したロガー(Log4J)を依存関係に追加しプログラムを実行すると、以下のような警告を吐きます。
log4j:WARN No appenders could be found for logger (xxxxxxx).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
これは、ログ出力を行うクラスに対して Appender の設定がされていないという意味です。
そこで、Log4J の設定ファイルを作成しプロジェクトの src/main/resources
に配置しましょう。
■ 作成する設定ファイル
開発環境ではログを出力させたいが、本番環境ではログを出力させる必要がない場合などがあるため、
ログを出力する場合としない場合の設定をメモしておきます。
ログを出力させる場合
log4j.rootLogger=DEBUG, console
log4j.logger.xxx=DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p-%c] %m%n
ログを出力させない場合
log4j.rootLogger=FATAL, null
log4j.appender.null=org.apache.log4j.varia.NullAppender