Playframework2(Scala)でfluentdを使う
Play2からfluentdを使う
この記事ではnode.js(log4js)からfluentdを使用する方法について紹介しました。 今回はPlay frameworkからfluentdへログ出力してみましょう。
元々Play frameworkのログ機能にはlogbackが使用されており、 confディレクトリにapplication-loggger.xmlを定義することでlogbackの動作を細かくカスタマイズできます。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.9.4
- Playframework : v2.3.2
- fluentd : v0.10.51
fluentdはこの記事と同じようにセッティングしておいてください。 また、Playframeworkもインストールしておきましょう。
サンプルアプリ作成
Playアプリ作成
activatorコマンドでPlayアプリのひな形を作成します。
$ activator new fluent-sample play-scala
次に、fluentd用のlogbackのアペンダをインストールして設定します。 fluentd-scalaという、Akkaベースのプラグインがあるので、下記のようにbuild.sbtに設定を追加します。
・ ・ libraryDependencies ++= Seq( jdbc, anorm, cache, ws, "eu.inn" %% "fluentd-scala" % "0.1.8" //fluentd-scala追加 )
fluentd-scalaをインストールします。
$ activator [fluent-sample] $ dependencies
conf/application-logger.xmlファイルを作成し、下記のようにfluentdアペンダを指定しましょう。 タグ名やレベル、fluentdのホストやポート情報を設定します。
<configuration> <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" /> <appender name="FLUENT" class="eu.inn.fluentd.FluentdAppender"> <tag>myTest</tag> <label>normal</label> <remoteHost>localhost</remoteHost> <port>24224</port> </appender> <root level="DEBUG"> <appender-ref ref="FLUENT" /> </root> </configuration>
Application.scala等の適当な場所で、play.api.Loggerを使ってログ出力をしてみてください。
・ ・ val log = play.api.Logger(getClass()) log.info("info!") log.debug("debug!") log.error("error!") ・ ・
fluentd設定を以前と同じようにしていれば、myTestタグのログが標準出力に出力されます。
参考サイトなど
- fluentd-scala: https://github.com/InnovaCo/fluentd-scala