Class: SysLogger

Inherits:
Object
  • Object
show all
Includes:
Logger::Severity, Syslog::Constants
Defined in:
lib/sys_logger.rb

Constant Summary collapse

VERSION =
'1.0.0'
SEVERITY_MAP =
{
  DEBUG     => Syslog::LOG_DEBUG,
  INFO      => Syslog::LOG_INFO,
  WARN      => Syslog::LOG_WARNING,
  ERROR     => Syslog::LOG_ERR,
  FATAL     => Syslog::LOG_CRIT,
  UNKNOWN   => Syslog::LOG_ALERT,
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(progname = nil, facility = nil, level = SysLogger::DEBUG) ⇒ SysLogger

ロガーインスタンスを生成します

引数

progname: ログに出力するプログラム名 facility: ファシリティ level : ログレベル(SysLogger::DEBUG, SysLogger::INFO, SysLogger::WARN, SysLogger::ERROR, SysLogger::FATAL, SysLogger::UNKNOWN)



38
39
40
41
# File 'lib/sys_logger.rb', line 38

def initialize(progname = nil, facility = nil, level = SysLogger::DEBUG)
  @progname, @facility, @level = progname, facility, level
  Syslog.open unless Syslog.opened?
end

Instance Attribute Details

#facilityObject

Returns the value of attribute facility.



27
28
29
# File 'lib/sys_logger.rb', line 27

def facility
  @facility
end

#levelObject Also known as: sev_threshold

Returns the value of attribute level.



27
28
29
# File 'lib/sys_logger.rb', line 27

def level
  @level
end

#prognameObject

Returns the value of attribute progname.



27
28
29
# File 'lib/sys_logger.rb', line 27

def progname
  @progname
end

Instance Method Details

#<<(message) ⇒ Object

ログを出力します。 severityはUNKNOWN扱いになります。

引数

message: ログに出力するメッセージ

戻り値

self



52
53
54
55
# File 'lib/sys_logger.rb', line 52

def <<(message)
  add(UNKNOWN, message)
  self
end

#add(severity, message = nil, progname = nil) ⇒ Object Also known as: log

メッセージをログに記録します。 ブロックを与えた場合はブロックを評価した返り値をメッセージとしてログに記録します。 ユーザがこのメソッドを直接使うことはあまりありません。

引数

severity: ログレベル。SysLogger クラスで定義されている定数を指定します。 この値がレシーバーに設定されているレベルよりも低い場合、 メッセージは記録されません。 message: ログに出力するメッセージを文字列か例外オブジェクトを指定します。 省略すると nil が用いられます。 progname: ログメッセージと一緒に記録するプログラム名を指定します。 省略すると nil が使用されますが、実際には内部で保持されている値が使用されます。

戻り値

true



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/sys_logger.rb', line 68

def add(severity, message = nil, progname = nil)
  severity ||= UNKNOWN
  return true if severity < level
  progname ||= @progname
  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end
  priority = SEVERITY_MAP[severity]
  priority |= facility if @facility
  progname = progname.to_s
  if progname.empty?
    Syslog.log(priority, '%s', message.to_s)
  else
    Syslog.log(priority, '%s: %s', progname, message.to_s)
  end
  true
end

#debug(progname = nil, &block) ⇒ Object

DEBUG 情報を出力します。

詳細

ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。 ブロックを与えた場合は、ブロックを評価した結果をメッセージとして ログを出力します。 引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した 結果をメッセージとしてログを出力します。

引数

progname: ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。 ブロックを与えた場合は、プログラム名を文字列として与えます。



112
# File 'lib/sys_logger.rb', line 112

def debug(progname = nil, &block)  ; add(DEBUG  , nil, progname, &block);end

#debug?Boolean

現在の Logger オブジェクトが DEBUG 以上のログレベルのメッセージを記録するなら 真を返します。

Returns:

  • (Boolean)


93
# File 'lib/sys_logger.rb', line 93

def debug?; @level <= DEBUG; end

#error(progname = nil, &block) ⇒ Object

ERROR 情報を出力します。

詳細

ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。 ブロックを与えた場合は、ブロックを評価した結果をメッセージとして ログを出力します。 引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した 結果をメッセージとしてログを出力します。

引数

progname: ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。 ブロックを与えた場合は、プログラム名を文字列として与えます。



145
# File 'lib/sys_logger.rb', line 145

def error(progname = nil, &block)  ; add(ERROR  , nil, progname, &block);end

#error?Boolean

現在の Logger オブジェクトが ERROR 以上のログレベルのメッセージを記録するなら 真を返します。

Returns:

  • (Boolean)


99
# File 'lib/sys_logger.rb', line 99

def error?; @level <= ERROR; end

#fatal(progname = nil, &block) ⇒ Object

FATAL 情報を出力します。

詳細

ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。 ブロックを与えた場合は、ブロックを評価した結果をメッセージとして ログを出力します。 引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した 結果をメッセージとしてログを出力します。

引数

progname: ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。 ブロックを与えた場合は、プログラム名を文字列として与えます。



156
# File 'lib/sys_logger.rb', line 156

def fatal(progname = nil, &block)  ; add(FATAL  , nil, progname, &block);end

#fatal?Boolean

現在の Logger オブジェクトが FATAL 以上のログレベルのメッセージを記録するなら 真を返します。

Returns:

  • (Boolean)


101
# File 'lib/sys_logger.rb', line 101

def fatal?; @level <= FATAL; end

#info(progname = nil, &block) ⇒ Object

INFO 情報を出力します。

詳細

ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。 ブロックを与えた場合は、ブロックを評価した結果をメッセージとして ログを出力します。 引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した 結果をメッセージとしてログを出力します。

引数

progname: ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。 ブロックを与えた場合は、プログラム名を文字列として与えます。



123
# File 'lib/sys_logger.rb', line 123

def info(progname = nil, &block)   ; add(INFO   , nil, progname, &block);end

#info?Boolean

現在の Logger オブジェクトが INFO 以上のログレベルのメッセージを記録するなら 真を返します。

Returns:

  • (Boolean)


95
# File 'lib/sys_logger.rb', line 95

def info?;  @level <= INFO ; end

#silence(temporary_level = ERROR) {|self.class.new(@progname && @progname.dup, @facility, temporary_level)| ... } ⇒ Object

与えられたブロック内で一時的にログレベルを変更します。 ブロック引数には、ログレベルが変更されたロガーが渡されます。

引数

temporary_level: 一時的なログレベル

Yields:



175
176
177
# File 'lib/sys_logger.rb', line 175

def silence(temporary_level = ERROR)
  yield self.class.new(@progname && @progname.dup, @facility, temporary_level)
end

#unknown(progname = nil, &block) ⇒ Object

UNKNOWN 情報を出力します。

詳細

ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。 ブロックを与えた場合は、ブロックを評価した結果をメッセージとして ログを出力します。 引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した 結果をメッセージとしてログを出力します。

引数

progname: ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。 ブロックを与えた場合は、プログラム名を文字列として与えます。



167
# File 'lib/sys_logger.rb', line 167

def unknown(progname = nil, &block); add(UNKNOWN, nil, progname, &block);end

#warn(progname = nil, &block) ⇒ Object

WARN 情報を出力します。

詳細

ブロックを与えなかった場合は、progname をメッセージとしてログを出力します。 ブロックを与えた場合は、ブロックを評価した結果をメッセージとして ログを出力します。 引数とブロックを同時に与えた場合は、progname をプログラム名、ブロックを評価した 結果をメッセージとしてログを出力します。

引数

progname: ブロックを与えない場合は、メッセージとして文字列または例外オブジェクトを指定します。 ブロックを与えた場合は、プログラム名を文字列として与えます。



134
# File 'lib/sys_logger.rb', line 134

def warn(progname = nil, &block)   ; add(WARN   , nil, progname, &block);end

#warn?Boolean

現在の Logger オブジェクトが WARN 以上のログレベルのメッセージを記録するなら 真を返します。

Returns:

  • (Boolean)


97
# File 'lib/sys_logger.rb', line 97

def warn?;  @level <= WARN ; end