是非に及ばず

プログラミングに関する話題などを書いていきます(主にRailsやAndroidアプリ開発について)

log4rの基本的な使い方のメモ

Log4rの使い方が分からずに苦労したのでメモしておく。

log4rのインストール

インストールはgemで簡単にできる。

gem install log4r

使い方

require 'rubygems'
require 'log4r'
require 'log4r/configurator'

logfile="./test.log"
progname="log4r-test"
formatter = Log4r::PatternFormatter.new(
  :pattern => "%d %C[%l]: %M",
  :date_format => "%Y/%m/%d %H:%M:%S"
)
logger = Log4r::Logger.new(progname)
outputter = Log4r::FileOutputter.new(
  "file",
  :filename => logfile,
  :trunc => false,
  :formatter => formatter
)
logger.add(outputter)

class Test
  attr_accessor :id
end

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

t = Test.new
t.id = "1234"

logger.info(t)

出力

2008-01-18 10:35:45 log4r-test[INFO]: info
2008-01-18 10:35:45 log4r-test[DEBUG]: debug
2008-01-18 10:35:45 log4r-test[WARN]: warn
2008-01-18 10:35:45 log4r-test[ERROR]: error
2008-01-18 10:35:45 log4r-test[FATAL]: fatal
2008-01-18 10:35:45 log4r-test[INFO]: Test: #

ポイント

苦労したところは、出力フォーマットのカスタマイズ。
まとまった情報がないのでマニュアルを見てなんとなく理解。
この部分で出力フォーマットを定義している。

formatter = Log4r::PatternFormatter.new(
  :pattern => "%d %C[%l]: %M",
  :date_format => "%Y/%m/%d %H:%M:%S"
)

:patternに指定できるものは以下の通り

パターン 内容
%c loggerの名前
%C loggerの名前(フルネーム)
%d 時刻。date_formatで指定したフォーマットが使用される
%t ログ出力を実行したソースの行番号を出力する
%m ログメッセージ本文。オブジェクトが渡された場合はobject.to_sの内容が出力される
%M ログメッセージ本文。オブジェクトが渡された場合は、object.inspectの内容が出力される
%l ログのレベル(INFO, DEBUG, WARN, ERROR, FATAL)
%% 単純に%が出力される