GAE/Jなプロジェクトで謎のWANRがログに出ていました。
<stderr>: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
<stderr>: SLF4J: Defaulting to no-operation (NOP) logger implementation
<stderr>: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
致命的なエラーでは無いようなのですが、それなりの頻度で出るので退治します。
上記のエラーでググると以下のような情報がヒットします。
http://stackoverflow.com/questions/7421612/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder
ようするに、ログ出力ライブラリ SLF4J のモジュールが足りないようです。
このプロジェクトではGAE/JからiOSのPUSH通知を行なうために Java Apple Push Notification Service Providerを使っていますが、このライブラリの中でSLF4Jを使っているようです。
プロジェクトのpom.xmlを見てみると 上記のjava-apnsの記述があり、Eclipseの参照ライブラリを見るとslf4j-api-1.7.2.jarはありますが、どうやらslf4j-log4j12がないようなのでpom.xmlに以下の定義を追加してみます。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
上記の変更を反映してからサイドGAEにアップしてログを確認してみます。
WARN No appenders could be found for logger (xxx.xxx.xxx.Xxx).
WARN Please initialize the log4j system properly.
なんか違うWARNに変わりましたorz
気を取り直して上記のWARNをググってみました。
http://d.hatena.ne.jp/learn/20100108/p1
要するに上記のJARファイルを追加したことにより、ログを出力しようとして、log4jの定義が無いぞと怒られているようです
とはいえ、今回はGAEなのでlog4j.propertiesがありません。
GAEのログ設定は
logging.properties
になりますので以下の定義を追加してみます。
#APNs Log4j
log4j.rootLogger=FINEST, console
log4j.appender.null=org.apache.log4j.varia.NullAppender
上記の設定を追加してようやくWARNが出なくなりました。
地味にここまでたどり着くのに2時間以上使いましたorz