要約
ログを記録するためのクラスです。
目次
- 特異メソッド
- インスタンスメソッド
- 定数
継承しているメソッド
特異メソッド
new(logdev, shift_age = 0, shift_size = 1048576, level: Logger::Severity::DEBUG, progname: nil, formatter: Formatter.new, datetime_format: nil, shift_period_suffix: '%Y%m%d') -> Logger
[permalink][rdoc][edit]-
Logger オブジェクトを生成します。
- [PARAM] logdev:
- ログを書き込むファイル名か、 IO オブジェクト(STDOUT, STDERR など)を指定します。
- [PARAM] shift_age:
- ログファイルを保持する数か、ログファイルを切り替える頻度を指定します。頻度には daily, weekly, monthly を文字列で指定することができます。省略すると、ログの保存先を切り替えません。
- [PARAM] shift_size:
- shift_age を整数で指定した場合のみ有効です。このサイズでログファイルを切り替えます。
- [PARAM] level:
- ログに記録する時のログレベルを指定します。省略した場合は Logger::Severity::DEBUG です。
- [PARAM] progname:
- ログに記録する時のプログラム名を指定します。省略した場合は nil です。
- [PARAM] formatter:
- ログに記録する時のログのフォーマッタを指定します。省略した場合は Logger::Formatter インスタンスです。
- [PARAM] datetime_format:
- ログに記録する時の日時のフォーマットを指定します。省略した場合は '%Y-%m-%d %H:%M:%S' です。
- [PARAM] shift_period_suffix:
- daily、weekly、monthlyでログファイルの切り替えを行う時のログファイルの名の末尾に追加する文字列のフォーマットを指定します。省略した場合は '%Y%m%d' です。
require 'logger' logger = Logger.new(STDERR) logger = Logger.new(STDOUT) logger = Logger.new('logfile.log') file = File.open('foo.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file, 'daily') logger = Logger.new(file, level: :info) logger = Logger.new(file, progname: 'progname') logger = Logger.new(file, formatter: formatter) logger = Logger.new(file, datetime_format: '%Y-%m-%d %H:%M:%S')
インスタンスメソッド
self << msg -> Integer | nil
[permalink][rdoc][edit]-
ログを出力します。
- [PARAM] msg:
- ログに出力するメッセージ。
require 'logger' logger = Logger.new(STDOUT) logger << "add message" # => add message
add(severity, message = nil, progname = nil) -> true
[permalink][rdoc][edit]add(severity, message = nil, progname = nil) { ... } -> true
log(severity, message = nil, progname = nil) -> true
log(severity, message = nil, progname = nil) { ... } -> true
-
メッセージをログに記録します。
ブロックを与えた場合はブロックを評価した返り値をメッセージとしてログに記録します。ユーザがこのメソッドを直接使うことはあまりありません。
- [PARAM] severity:
- ログレベル。Logger クラスで定義されている定数を指定します。この値がレシーバーに設定されているレベルよりも低い場合、メッセージは記録されません。
- [PARAM] message:
- ログに出力するメッセージを文字列か例外オブジェクトを指定します。省略すると nil が用いられます。
- [PARAM] progname:
- ログメッセージと一緒に記録するプログラム名を指定します。省略すると nil が使用されますが、実際には内部で保持されている値が使用されます。
require 'logger' logger = Logger.new(STDOUT) logger.add(Logger::FATAL) { 'Fatal error!' } # 通常はログレベルごとのメソッドを使えばいいので、 add は使わない logger.fatal('Fatal error!') # => F, [2019-03-11T00:34:18.037272 #1320] FATAL -- : Fatal error! # F, [2019-03-11T00:34:18.037272 #1320] FATAL -- : Fatal error!
close -> nil
[permalink][rdoc][edit]-
ログ出力に使用していた IO オブジェクトを閉じます。
require 'logger' logger = Logger.new(STDOUT) logger.info("test") # => I, [2019-04-16T00:40:11.837898 #2795] INFO -- : test logger.close logger.info("test") # => log writing failed. closed stream
datetime_format -> String | nil
[permalink][rdoc][edit]-
ログに記録する時の日付のフォーマットです。
デフォルトでは nil ですが、この値が nil の場合は日付のフォーマットとして "%Y-%m-%dT%H:%M:%S.%06d " を使用します。
なお、"%06d" には Time#strftime ではなく、単に Time#usec の値を String#% でフォーマットしたものが入ります。
require 'logger' logger = Logger.new(STDOUT) logger.datetime_format # => nil logger.debug("test") logger.datetime_format = '%Y/%m/%dT%H:%M:%S.%06d' logger.datetime_format # => "%Y/%m/%dT%H:%M:%S.%06d" logger.debug("test") # => D, [2019-03-12T22:52:13.674385 #17393] DEBUG -- : test # D, [2019/03/12T22:52:13.000012#17393] DEBUG -- : test
[SEE_ALSO] Time#strftime, Logger#datetime_format=
datetime_format=(format)
[permalink][rdoc][edit]-
ログに記録する時の日付のフォーマットをセットします。
require 'logger' logger = Logger.new(STDOUT) logger.datetime_format # => nil logger.debug("test") logger.datetime_format = '%Y/%m/%dT%H:%M:%S.%06d' # => "%Y/%m/%dT%H:%M:%S.%06d" logger.datetime_format # => "%Y/%m/%dT%H:%M:%S.%06d" logger.debug("test") # => D, [2019-03-13T23:52:13.674385 #17393] DEBUG -- : test # D, [2019/03/13T23:52:13.000012#17393] DEBUG -- : test
[SEE_ALSO] Time#strftime, Logger#datetime_format
debug(progname = nil) -> true
[permalink][rdoc][edit]debug(progname = nil) { ... } -> true
-
ログレベルが DEBUG のメッセージを出力します。
現在の Logger のログレベルが DEBUG よりも高い場合、メッセージは出力されません。
ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。
ブロックを与えた場合は、ブロックを評価した結果をメッセージとしてログを出力します。
引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した結果をメッセージとしてログを出力します。
- [PARAM] progname:
- ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。ブロックを与えた場合は、プログラム名を文字列として与えます。
logger.debug "Waiting for input from user" # ... logger.debug { "User typed #{input}" } logger.debug("MainApp") { "Received connection from #{ip}" }
debug? -> bool
[permalink][rdoc][edit]-
現在の Logger オブジェクトが DEBUG 以上のログレベルのメッセージを記録するなら真を返します。
require 'logger' logger = Logger.new(STDOUT, level: Logger::Severity::DEBUG) logger.debug? # => true logger = Logger.new(STDOUT, level: Logger::Severity::INFO) logger.debug? # => false
error(progname = nil) { ... } -> true
[permalink][rdoc][edit]error(progname = nil) -> true
-
ERROR 情報を出力します。
ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。
ブロックを与えた場合は、ブロックを評価した結果をメッセージとしてログを出力します。
引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した結果をメッセージとしてログを出力します。
- [PARAM] progname:
- ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。ブロックを与えた場合は、プログラム名を文字列として与えます。
require 'logger' logger = Logger.new(STDOUT) logger.error("error1") # => E, [2019-03-15T22:54:37.925635 #14878] ERROR -- : error1 logger.error("MainApp") { "error2" } # => E, [2019-03-16T03:50:58.062094 #2172] ERROR -- MainApp: error2 logger.level = Logger::Severity::FATAL # 出力されない logger.error("error3")
[SEE_ALSO] Logger#debug
error? -> bool
[permalink][rdoc][edit]-
現在の Logger オブジェクトが ERROR 以上のログレベルのメッセージを記録するなら真を返します。
require 'logger' logger = Logger.new(STDOUT) logger.error? # => true logger.level = Logger::Severity::FATAL logger.error? # => false
fatal(progname = nil) { ... } -> true
[permalink][rdoc][edit]fatal(progname = nil) -> true
-
FATAL 情報を出力します。
ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。
ブロックを与えた場合は、ブロックを評価した結果をメッセージとしてログを出力します。
引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した結果をメッセージとしてログを出力します。
- [PARAM] progname:
- ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。ブロックを与えた場合は、プログラム名を文字列として与えます。
require 'logger' logger = Logger.new(STDOUT) logger.fatal("fatal1") # => F, [2019-03-17T22:36:43.042422 #4028] FATAL -- : fatal1 logger.fatal("MainApp") { "fatal2" } # => F, [2019-03-17T22:36:43.042462 #4028] FATAL -- MainApp: fatal2
[SEE_ALSO] Logger#debug
fatal? -> bool
[permalink][rdoc][edit]-
現在の Logger オブジェクトが FATAL 以上のログレベルのメッセージを記録するなら真を返します。
require 'logger' logger = Logger.new(STDOUT, level: Logger::Severity::FATAL) logger.fatal? # => true logger.level = 5 logger.fatal? # => false
formatter -> String
[permalink][rdoc][edit]-
ログを出力する際に使用するフォーマッターを取得します。
このメソッドの返り値が持つ call メソッドは 4 つの引数 (severity, time, program name, message) を受けとります。
require 'logger' logger = Logger.new(STDOUT) logger.formatter # => nil logger.info("test") # => I, [2019-05-09T22:13:56.509159 #13912] INFO -- : test ltsv_formatter = proc { |severity, timestamp, progname, msg| "time:#{timestamp}\tlevel:#{severity}\tprogname:#{progname}\tmessage:#{msg}\n" } logger.formatter = ltsv_formatter logger.formatter # => #<Proc:0x00007fa3048b8e00@/path/to/file:8> logger.info("MyApp") { "test" } # => time:2019-05-09 22:13:56 +0900 level:INFO progname:MyApp message:test
formatter=(formatter)
[permalink][rdoc][edit]-
ログを出力する際に使用するフォーマッターをセットします。
- [PARAM] formatter:
- 4 つの引数 (severity, time, program name, message) を受け取る call メソッドを持つオブジェクトを指定します。call メソッドの返り値は文字列にしてください。
require 'logger' logger = Logger.new logger.formatter = proc{|severity, datetime, progname, message| "#{datetime}: #{message}\n" }
info(progname = nil) { ... } -> true
[permalink][rdoc][edit]info(progname = nil) -> true
-
INFO 情報を出力します。
ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。
ブロックを与えた場合は、ブロックを評価した結果をメッセージとしてログを出力します。
引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した結果をメッセージとしてログを出力します。
- [PARAM] progname:
- ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。ブロックを与えた場合は、プログラム名を文字列として与えます。
require 'logger' logger = Logger.new(STDOUT) logger.info("info1") # => I, [2019-03-21T03:36:28.003418 #2533] INFO -- : info1 logger.info("MainApp") { "info2" } # => I, [2019-03-21T03:36:28.003493 #2533] INFO -- MainApp: info2
[SEE_ALSO] Logger#debug
info? -> bool
[permalink][rdoc][edit]-
現在の Logger オブジェクトが INFO 以上のログレベルのメッセージを記録するなら真を返します。
require 'logger' logger = Logger.new(STDOUT) logger.info? # => true logger.level = Logger::Severity::ERROR logger.info? # => false
level -> Integer
[permalink][rdoc][edit]sev_threshold -> Integer
-
レシーバにセットされているログレベルを取得します。
require 'logger' logger = Logger.new(STDOUT) logger.level # => 0 logger.level = Logger::Severity::ERROR logger.level # => 3
level=(level)
[permalink][rdoc][edit]sev_threshold=(level)
-
Logger オブジェクトのログレベルを設定します。ログレベルがこれより低いメッセージは出力されません。
- [PARAM] level:
- ログレベルを指定します。
require 'logger' logger = Logger.new(STDOUT) logger.level # => 0 logger.level = Logger::Severity::ERROR # => 3 logger.level # => 3
progname -> String
[permalink][rdoc][edit]-
ログに出力するプログラム名を取得します。
require 'logger' logger = Logger.new(STDOUT) logger.progname # => nil logger.progname = "MyProgName" logger.progname # => "MyProgName"
progname=(name)
[permalink][rdoc][edit]-
ログに出力するプログラム名を設定します。
require 'logger' logger = Logger.new(STDOUT) logger.progname # => nil logger.progname = "MyProgName" # => "MyProgName" logger.progname # => "MyProgName" logger.info("info1") # => I, [2019-04-23T00:08:55.585459 #2823] INFO -- MyProgName: info1 logger.info("OtherProgName") { "info2" } # => I, [2019-04-23T00:08:55.585500 #2823] INFO -- OtherProgName: info2
unknown(progname = nil) { ... } -> true
[permalink][rdoc][edit]unknown(progname = nil) -> true
-
UNKNOWN 情報を出力します。
ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。
ブロックを与えた場合は、ブロックを評価した結果をメッセージとしてログを出力します。
引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した結果をメッセージとしてログを出力します。
- [PARAM] progname:
- ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。ブロックを与えた場合は、プログラム名を文字列として与えます。
require 'logger' logger = Logger.new(STDOUT) logger.unknown("unknown1") # => A, [2019-03-28T00:26:42.850942 #2765] ANY -- : unknown1 logger.unknown("MyApp") { "unknown2" } # => A, [2019-03-28T00:26:42.851021 #2765] ANY -- MyApp: unknown2
[SEE_ALSO] Logger#debug
warn(progname = nil) { ... } -> true
[permalink][rdoc][edit]warn(progname = nil) -> true
-
WARN 情報を出力します。
ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。
ブロックを与えた場合は、ブロックを評価した結果をメッセージとしてログを出力します。
引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した結果をメッセージとしてログを出力します。
- [PARAM] progname:
- ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。ブロックを与えた場合は、プログラム名を文字列として与えます。
require 'logger' logger = Logger.new(STDOUT) logger.warn("warn1") # => W, [2019-03-27T22:46:17.744243 #12744] WARN -- : warn1 logger.warn("MyApp") { "warn2" } # => W, [2019-03-27T22:46:17.744322 #12744] WARN -- MyApp: warn2 logger.level = Logger::Severity::ERROR # 出力されない logger.warn("warn3")
[SEE_ALSO] Logger#debug
warn? -> bool
[permalink][rdoc][edit]-
現在の Logger オブジェクトが WARN 以上のログレベルのメッセージを記録するなら真を返します。
require 'logger' logger = Logger.new(STDOUT) logger.warn? # => true logger.level = Logger::Severity::ERROR logger.warn? # => false
定数
ProgName -> String
[permalink][rdoc][edit]-
ログファイル作成時に使うプログラム名。
SEV_LABEL -> Array
[permalink][rdoc][edit]-
ログレベルのラベルを格納した配列。
VERSION -> String
[permalink][rdoc][edit]-
このライブラリのバージョンを表す文字列。