LoginSignup
7
6

More than 5 years have passed since last update.

PlayFramework2.x ログの設定でSyslogAppenderを使う

Posted at

2系からPlay frameworkのロギングがlog4jではなくlogbackになっています。

AppenderとLoggerの設定をおこなうという設定方法の概念はlog4jとあまりかわらないのでlog4jを触ったことがあればすんなり受け入れられると思います。

Appenderは下記URLで標準のものをチェックできます。
よく使うのはFileやSyslogでしょうか。

playで設定するにはconf/logger.xmlを作成します。
LOCAL3で出力する場合は下記のように書きます。

conf/logger.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
  <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
    <syslogHost>localhost</syslogHost>
    <port>514</port>
    <facility>LOCAL3</facility>
    <suffixPattern>%date - [%level] - [%thread] %logger %msg</suffixPattern>
  </appender>
  <logger name="play" level="INFO" />
  <logger name="application" level="INFO" />
  <root level="INFO">
    <appender-ref ref="SYSLOG" />
  </root>
</configuration>

違う名前にしたい場合は起動オプション-Dlogger.xxxxを指定します。
xxxxの部分にはresource, file, urlを利用できます。

command
./target/universal/stage/bin/[yourapp] -Dlogger.resource=logger-prod.xml

SyslogAppenderはTCPでログを転送します。syslogサーバで受け取る側がplay起動時にTCPで待ち受けていて接続可能である必要があります。

rsyslogの場合は/etc/rsyslog.confに下記の設定を追加してあらかじめrsyslogを再起動しておく必要があります。

/etc/rsyslog.conf追記TCP+UDP待ち受けとlocal3出力
$ModLoad imudp
$UDPServerRun 514
$InputTCPServerRun 514

local3.*     /var/log/myapp.log

これでログローテーションを設定、Fluentdでソースを上記ファイルにして運用すると楽です。
Fluentd用のAppenderなどあればその方が効率がいいのかもしれませんがrsyslogの実績を考えると当面この方が安心です。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6