Playframework2(Scala)でfluentdを使う

2014.08.01

この記事は公開されてから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タグのログが標準出力に出力されます。

参考サイトなど