2012年4月4日水曜日

[Red5] SLF4j+logbackでログを出力してみたよ

またも1ヶ月ぶりのエントリとなります。週1ぐらいで書ければいいんですが。。。

しかし、アプリってやっぱログ出ないとまずいよね〜(何が?)。
なので、今回はログ出力のやり方を。




※他のRed5関連のエントリはこちら


プロジェクトのビルドパスにログ出力ライブラリを追加
SLF4j、logback関連のjarファイルをEclipseプロジェクトのビルドパスに追加する。
必要なjarファイルは、
  • slf4j-api-x.x.x.jar 
  • logback-classic-x.x.x.jar
  • logback-core-x.x.x..jar
  • jcl-over-slf4j-x.x.x.jar
  • jul-to-slf4j-x.x.x.jar
  • log4j-over-slf4j-x.x.x.jar
あたりの模様。
Red5のインストールフォルダに"lib"というフォルダがあって、そこに一式入っているので、そこから必要なjarファイルを指定してもいいし、別途入手してもいいと思いまする。
Eclipseでプロジェクトのプロパティを開いて、
Javaのビルドパス→外部Jarの追加
で必要なjarファイルを指定して終了。

(macで外部jarファイルでこのファイルを指定する方法が分からなかったので、コピって適当なフォルダにおいて、そこにパスを通した。)

web.xmlにログ用のリスナ、フィルタ、フィルタマッピングを追記
おまじない。
参考サイト(このエントリの一番下に記載)を見ながら、下記内容を追記。

logback設定ファイル「logback-myApp.xml」を作成
logbackの設定ファイルを作って中身を書く。
ファイル名の"myApp"の部分は自分の作ったRed5アプリの名前。
例えば、 logback-HelloRed5.xml みたいな感じ。

このファイルを置く場所は「パスの通っている場所」とのこと。
oflaDemoを見ると、
webapps/oflaDemo/WEB-INF/classes
に置いているようなのでこれを踏襲しよう。

ちなみに、Eclipseのプロジェクト上の置き場所は、動的Webプロジェクトだと、
(プロジェクトルート) - Java Resources - src
直下に置くとデプロイされたときにうまく配置される。
お手軽なやり方は、

  1. 上記フォルダに空のlogback-myApp.xmlを作成
  2. logback-oflaDemo.xmlの内容をコピって、logback-myApp.xmlに貼り付け
  3. context-Name(2カ所)を自作アプリ名に修正
  4. ログファイル出力ディレクトリを修正(<File>タグのところ)

でいけるかと。
ちなみに、ログファイル出力ディレクトリは、
log/hogehoge.log
と記述すると、webappsフォルダと同じ階層にあるlogフォルダ内にhogehoge.logというファイル名で出力されます。
あと、ログ出力実験ですべてのログが出るように、出力レベルはとりあえず"trace"にしておこう。
自分はこれに標準出力(コンソールへの出力)のappenderを追記しました。記載の内容は参考サイトなど他の詳しいサイトで(逃。
(ロギング詳しくなくて、root loggerとcontext loggerの挙動とかまだいまいち分かってないです。はは。もう少し勉強して追記します。)

出力先とかappend設定とか出力フォーマットとかいろいろいじれるので、追々いじっていけばいいかな。

設定はこれで完了。

ログ出力してみる
試しに、ApplicationAdaptorを継承した自作アプリのクラスに、エントリポイントの1つであるstartメソッドを追加(オーバーライド)して、その中でログを出力してみる。
まずは、メンバ変数にLoggerを追加。
MyClassNameとmyAppは自分の作ったクラス、アプリ名に合わせて修正。
必要なクラスのインポートも忘れずに。
あとは、適当にstartメソッドを追記。

ここまで書いたら、Red5を起動してみよう。
コンソールにこんなのが表示されるはず。


うむ。出たな。

[参考サイト]
Documentation/Tutorials/LoggingSetup – Red5
logback.xml - Java好き

0 件のコメント: