masked雑記

IT関連の記事を書く

unicornのloggerを変更する

なんでこんな記事を

unicornのloggerを変更したくて"unicorn logger"で検索したら船が出てくるので。
船をgoogle検索から除きたい場合は"-ship"とつけて検索してください。

www.google.com

ソースを読む

github.com

debug info warn error fatalが実装されてるオブジェクトを設定すればいい
デフォルトのロガーはconfiguratorのDEFAULTSにある通りLogger.new($stderr)

実装する

unicornに読み込ませる設定ファイルを作成する。

config/unicorn.rb

require 'json'

class MyLogger < Logger
  def format_message(severity, timestamp, progname, msg)
    JSON.dump({severity: severity, timestamp: timestamp, progname: progname, msg: msg}) + "\n"
  end
end

logger MyLogger.new(STDOUT)

今回は適当に標準出力にJSON形式のログを出力するようにしました。

実行結果

コマンド

bundle exec unicorn_rails -p 8080 -c config/unicorn.rb

結果

{"severity":"INFO","timestamp":"2019-07-14 22:54:32 +0900","progname":null,"msg":"listening on addr=0.0.0.0:8080 fd=9"}
{"severity":"INFO","timestamp":"2019-07-14 22:54:32 +0900","progname":null,"msg":"worker=0 spawning..."}
{"severity":"INFO","timestamp":"2019-07-14 22:54:32 +0900","progname":null,"msg":"master process ready"}
{"severity":"INFO","timestamp":"2019-07-14 22:54:32 +0900","progname":null,"msg":"worker=0 spawned pid=88745"}
{"severity":"INFO","timestamp":"2019-07-14 22:54:32 +0900","progname":null,"msg":"Refreshing Gem list"}
{"severity":"INFO","timestamp":"2019-07-14 22:54:35 +0900","progname":null,"msg":"worker=0 ready"}

できた。