
Playframework2(Scala)でfluentdを使う
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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
 








