2019年7月27日土曜日

ruby の標準 logger で JSON 形式のログを出力する方法

概要

タイトルの通りです
いつもやり方を忘れるのでメモしておきます

環境

  • macOS 10.14.5
  • Ruby 2.6.2p47

サンプルコード

require 'logger'

logger = Logger.new(STDOUT)
logger.progname = "app.rb"
logger.formatter = proc do |severity, datetime, progname, msg|
  %Q|{"severity": "#{severity}", "datetime": "#{datetime.to_s}", "progname": "#{progname}", "message": "#{msg}"}\n|
end

logger.debug("hello debug")
logger.info("hello info")
logger.warn("hello warn")
logger.error("hello error")

結果

{"severity": "DEBUG", "datetime": "2019-07-25 08:37:22 +0900", "progname": "app.rb", "message": "hello debug"} {"severity": "INFO", "datetime": "2019-07-25 08:37:22 +0900", "progname": "app.rb", "message": "hello info"} {"severity": "WARN", "datetime": "2019-07-25 08:37:22 +0900", "progname": "app.rb", "message": "hello warn"} {"severity": "ERROR", "datetime": "2019-07-25 08:37:22 +0900", "progname": "app.rb", "message": "hello error"}

参考サイト

0 件のコメント:

コメントを投稿