Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > syslogライブラリ > Syslogモジュール

module Syslog

クラスの継承リスト: Syslog < Syslog::Constants < Syslog::Option < Syslog::Facility < Syslog::Level < Syslog::Macros

要約

UNIXのsyslogのラッパーモジュール。 syslog の詳細については syslog(3) を参照してください。

require 'syslog'

Syslog.open("syslogtest")
Syslog.log(Syslog::LOG_WARNING, "the sky is falling in %d seconds!", 100)
Syslog.close
# 書き込まれているか確かめる。
# 但し、実行環境によってログの場所が違う。くわしくはsyslog.confを参照。
File.foreach('/var/log/system.log'){|line|
  line.chomp!
  if /syslogtest/ =~ line
    puts line
  end
}

目次

モジュール関数
alert crit debug emerg err info notice warning close facility ident options instance log mask mask= open open! reopen opened?

モジュール関数

emerg(message, *arg) -> self[permalink][rdoc]
alert(message, *arg) -> self
crit(message, *arg) -> self
err(message, *arg) -> self
warning(message, *arg) -> self
notice(message, *arg) -> self
info(message, *arg) -> self
debug(message, *arg) -> self

Syslog#log()のショートカットメソッド。 システムによっては定義されていないものもあります。

例えば、Syslog.emerg(message, *arg) は、Syslog.log(Syslog::LOG_EMERG, message, *arg) と同じです。

[PARAM] message:
フォーマット文字列です。Kernel.#sprintf と同じ形式の引数を指定します。
[PARAM] arg:
フォーマットされる引数です。
[EXCEPTION] ArgumentError:
引数が1つ以上でない場合に発生します。
[EXCEPTION] RuntimeError:
syslog がopen されていない場合発生します。

例:

require 'syslog'
Syslog.open("syslogtest") {|syslog|
  syslog.crit("the sky is falling in %d seconds!",5)
}
close -> nil[permalink][rdoc]

syslogを閉じます。

[EXCEPTION] RuntimeError:
syslog がopen されていない場合発生します。

使用例

require 'syslog'

Syslog.open("syslogtest")
Syslog.log(Syslog::LOG_WARNING, "the sky is falling in %d seconds!", 100)
Syslog.close
ident -> String | nil[permalink][rdoc]
options -> Integer | nil
facility -> Integer | nil

最後のopenで与えられた対応する引数を返します。

使用例

require 'syslog'

Syslog.open("syslogtest")
p Syslog.ident    #=> "syslogtest"
p Syslog.options  #=> 3
p Syslog.facility #=> 8
instance -> self[permalink][rdoc]

selfを返します。(旧版との互換性のため)

log(priority, format, *arg) -> self[permalink][rdoc]

syslogにメッセージを書き込みます。

priority は優先度を示す定数(Syslog::Constants参照)です。 また、facility(Syslog::Constants参照)を論理和で指定す ることで open で指定した facility を切替えることもできます。

format 以降は Kernel.#sprintf と同じ形式の引数を指定します。

但し、syslog(3) のように format に %m は使用できません。

メッセージに改行を含める必要はありません。

[PARAM] priority:
priority は優先度を示す定数を指定します。 詳しくは、Syslog::Constantsを参照してください。
[PARAM] format:
フォーマット文字列です。
[PARAM] arg:
フォーマットされる引数です。
[EXCEPTION] ArgumentError:
引数が2つ以上でない場合に発生します。

例:

require 'syslog'
Syslog.open("syslogtest") {|syslog|
  syslog.log(Syslog::LOG_CRIT, "the sky is falling in %d seconds!", 10)
}
mask -> Integer | nil[permalink][rdoc]
mask=(mask)

ログの優先度のマスクを取得または設定します。 マスクは永続的であり、 Syslog.openやSyslog.close ではリセットされません。

[PARAM] mask:
ログの優先度のマスクを設定します。
[EXCEPTION] RuntimeError:
syslog がオープンされていない場合、発生します。

使用例

require 'syslog'
include Syslog::Constants
# ログの場所は実行環境によって異なる。詳しくはsyslog.conf を参照
log = '/var/log/ftp.log'

Syslog.open('ftpd', LOG_PID | LOG_NDELAY, LOG_FTP)
Syslog.mask = Syslog::LOG_UPTO(LOG_ERR)

[ LOG_CRIT, LOG_ERR, LOG_WARNING,
  LOG_NOTICE, LOG_INFO, LOG_DEBUG ].each_with_index { |c, i|
  Syslog.log(c, "test for syslog FTP #{c}, #{i}")
}
Syslog.close
File.foreach(log){|line|
  print line if line =~ /FTP/
}
open(ident=$0, options=Syslog::LOG_PID|Syslog::LOG_CONS, facility=Syslog::LOG_USER) -> self[permalink][rdoc]
open(ident=$0, options=Syslog::LOG_PID|Syslog::LOG_CONS, facility=Syslog::LOG_USER) { |syslog| ... } -> self

与えられた引数でsyslogを開きます。以降、他の Syslog モジュール関数が使 用可能となります。

ブロック付きで呼ばれた場合は、self を引数としてブロックを実行し、 最後に Syslog.#close を行います。

syslog の詳細については syslog(3) を参照してください。

[PARAM] ident:
すべてのログにつく識別子で、どのプログラムから送られ たログなのかを識別するために使われる文字列を指定します。 指定しない場合はプログラム名が使われます。
[PARAM] options:
Syslog.open や Syslog.log の動作を制御するフラグを指定します。 指定しない場合は、Syslog::LOG_PID|Syslog::LOG_CONSの値が使われ ます。使用できる値はSyslog::Constants を参照してください。
[PARAM] facility:
ログ出力を行うプログラムの種別を指定します。syslog はこの値 にしたがって出力先となるログファイルを決定します。 詳しくは、 syslog.conf(5), Syslog::Constants を参照してください。
[EXCEPTION] RuntimeError:
syslogを既に開いていた場合はRuntimeErrorが発生します。
[RETURN]
self を返します。

syslogを既に開いていた場合はRuntimeErrorが発生します。

require 'syslog'

Syslog.open("syslogtest")
Syslog.log(Syslog::LOG_WARNING, "the sky is falling in %d seconds!", 100)
begin
  Syslog.open("syslogtest2")
rescue RuntimeError => err
  puts err #=> "syslog already open"
end

options と facility に指定できる値については Syslog::Constants を参照してください。

指定例:

require 'syslog'
Syslog.open('ftpd', Syslog::LOG_PID | Syslog::LOG_NDELAY,
            Syslog::LOG_FTP)
open!(ident=$0, options=Syslog::LOG_PID|Syslog::LOG_CONS, facility=Syslog::LOG_USER) { |syslog| ... } -> self[permalink][rdoc]
reopen(ident=$0, options=Syslog::LOG_PID|Syslog::LOG_CONS, facility=Syslog::LOG_USER) { |syslog| ... } -> self

開いていた syslog を最初にクローズする点を除いてSyslog.#open と同じです。

[PARAM] ident:
すべてのログにつく識別子で、どのプログラムから送られ たログなのかを識別するために使われる文字列を指定します。 指定しない場合はプログラム名が使われます。
[PARAM] options:
Syslog.open や Syslog.log の動作を制御するフラグを指定します。 指定しない場合は、Syslog::LOG_PID|Syslog::LOG_CONSの値が使われ ます。使用できる値はSyslog::Constants を参照してください。
[PARAM] facility:
ログ出力を行うプログラムの種別を指定します。syslog はこの値 にしたがって出力先となるログファイルを決定します。 詳しくは、 syslog.conf(5), Syslog::Constants を参照してく ださい。

使用例

require 'syslog'

Syslog.open("syslogtest")
Syslog.log(Syslog::LOG_WARNING, "the sky is falling in %d seconds!", 100)
begin
  Syslog.open!("syslogtest2")
  Syslog.log(Syslog::LOG_WARNING, "the sky is falling in %d seconds!", 200)
rescue RuntimeError => err
  # RuntimeError は発生しない。
  puts err
end
File.foreach('/var/log/system.log'){|line|
  print line if line =~ /the sky is/
}

[SEE_ALSO] Syslog.#open

opened? -> bool[permalink][rdoc]

syslog をオープンしていれば真を返します。

使用例

require 'syslog'

p Syslog.opened? #=> false
Syslog.open("syslogtest")
Syslog.log(Syslog::LOG_WARNING, "the sky is falling in %d seconds!", 100)
p Syslog.opened? #=> true