この記事は公開されてから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