LOGGER

Section: User Commands (1)
Updated: November 2015
Index Return to Main Contents
 

名前

logger - システムログにメッセージを記録する。  

書式

logger [options] [message]  

説明

logger はシステムログにエントリを作成する。

オプションの message 引き数が指定されると、 ログに書き込まれる。 message 引き数が指定されない場合、 かつ -f オプションも指定されない場合、 標準入力がログに書き込まれる。  

オプション

-d, --udp
データグラム (UDP) のみを使う。 デフォルトでは、接続は /etc/services に定義された syslog ポート (多くの場合 514) に行われる。

どこに接続するかの指定は、--server--socket も参照すること。

-e, --skip-empty
ファイルを処理する際に空行を無視する。 空行は何も文字がない行と定義される。 よって、空白のみを含む行は空とは「判断されない」。 --prio-prefix オプションが指定された場合、 優先度は行の一部としては判断されない点に注意すること。 よって、このモードでの空行は、 優先度のプレフィックス (つまり <13>) の後の、 何も文字を含まない行である。
-f, --file file
指定した file の内容を記録する。 このオプションはコマンドラインメッセージと組み合わせて 使うことはできない。
-i
各行に logger プロセスの PID を記録する。
--id[=id]
各行に logger プロセスの PID を記録する。 オプションの引き数 id が指定された場合、 logger コマンドの PID の代わりに使われる。 メッセージを送るスクリプトでは、 --id=$$ (PPID) を使うことが推奨される。

システムロギングの基盤 (例えば systemd が /dev/log をリッスンする場合) は、 メッセージに指定された PID をローカルソケットのクレデンシャルで 上書きするようにしなければならない点に注意すること。 root の権限があり、指定された PID のプロセスが存在する場合にのみ、 logger(1) は指定された id でソケットのクレデンシャルを設定できる。 そうでない場合、ソケットのクレデンシャルは修正されず、 暗黙裡に無視される。

--journald[=file]
systemd ジャーナルエントリを書き込む。 エントリは file が指定された場合は、ファイルから読み込まれる。 指定されない場合は、標準入力から読み込まれる。 各行は journald が受け付けるフィールドで始める必要がある。 詳細は systemd.journal-fields(7) を参照すること。 MESSAGE_ID フィールドを使うのが一般にはよい考えである。 これによりエントリを見つけやすくなる。 例:
    logger --journald <<end
    MESSAGE_ID=67feb6ffbaf24c5cbec13c008dd72309
    MESSAGE=The dogs bark, but the caravan goes on.
    DOGS=bark
    CARAVAN=goes on
    end
logger --journald=entry.txt
--journald は優先度のような他のオプションを無視する点に注意すること。 優先度が必要な場合、入力に含める必要があり、 PRIORITY フィールドを使うこと。 journalctl を単純に実行すると、MESSAGE フィールドを表示する。 残りのフィールドを見るには、 journalctl --output json-pretty を使うこと。

MESSAGE に改行を入れるためには、MESSAGE を複数回指定すること。 これは特殊なケースとして扱われ、他のフィールドが複数回指定されると、 ジャーナル内の配列として格納される。

--msgid msgid RFC5424 MSGID フィールドを設定する。 msgid 内に特殊文字は許可されていない点に注意すること。 このオプションは、--rfc5424 も指定された場合にのみ使われる。 指定されない場合は、暗黙裡に無視される。
-n, --server server
システムログソケットではなく、 指定したリモートの syslog server に書き込む。 --udp または --tcp が 指定されない場合、logger は最初に UDP を使おうとする。 UDP が失敗した場合、TCP 接続を試みる。
--no-act
システムログにログメッセージを書き込み、接続またはジャーナルを 削除する以外は、すべてを実行する。 このオプションは、テストの目的で、--stderr とともに使うことができる。
--octet-count
メッセージの送信に RFC 6587 オクテットカウンティングフレーミングの方法を使う。 このオプションを使わない場合、デフォルトでは UDP ではフレーミングなし、 TCP では RFC6587 非トランスペアレントフレーミング (オクテットスタッフィング (stuffing) とも呼ばれる) を使う。
-P, --port port
指定した port を使う。 このオプションを指定しない場合、ポートのデフォルトは、 udp では syslog、tcp 接続では syslog-conn となる。
-p, --priority priority
メッセージを指定した優先度 (priority) で登録する。 湯鮮度は数値もしくは 機能分類.重要度 の組で指定する。 例えば、-p local3.info は、重要度 informational 機能分類 local3 としてメッセージを記録する。 デフォルトは user.notice である。
--prio-prefix
標準入力を読み込むときに各行で syslog プレフィックスを探す。 プレフィックスは機能分類と重要度をエンコードした数値を山括弧の 中に書く。 数値は、機能分類に 8 を掛けて、重要度を足して作る。 例えば、local0.info は、機能分類=16 重要度=6 なので、<134> となる。

プレフィックスに機能分類が含まれない場合、 機能分類は -p オプションで指定した値が使われる。 同様に、プレフィックスが指定されない場合、 その行は -p オプションで指定された重要度 priority で記録される。

このオプションはコマンドラインメッセージには影響しない。

--rfc3164
リモートサーバーにメッセージを送信するために、RFC 3164 BSD syslog プロトコルを使う。
--rfc5424[=without]
リモートサーバーにメッセージを送信するために、RFC 5424 syslog プロトコルを使う。 オプションの without 引き数は、以下の値のカンマ区切りのリストである: notq, notime, nohost.

notq を指定すると、送信されるメッセージから 時間品質 (time-quality) 構造データを抑止する。 時間品質情報は、ローカルクロックが同期しているかと、 タイムスタンプのマイクロ秒の最大値がオフにされているかを表す。 時間品質は、--sd-id timeQuality が指定されていると、 自動的に抑止される。

notime を指定すると (notq が暗黙裡に指定され)、 マイクロ秒とタイムゾーンを含む ISO-8601 形式での 完了時の送信者タイムスタンプ (complete sender timestamp) を抑止する。

nohost を指定すると、 gethostname(2) 情報をメッセージヘッダから抑止する。

RFC 5424 プロトコルはバージョン 2.26 以降で logger のデフォルトになった。
-s, --stderr
システムログに記録したメッセージを標準エラー出力にも出力する。
--sd-id name[@digits]
RFC 5424 メッセージヘッダの構造データ要素 ID を指定する。 このオプションは、--sd-param で新しい要素を導入する前に指定する必要がある。 構造データ要素の数は限定されていない。 ID (name とオプションの @digits) は、 大文字小文字が関係あり、要素のタイプと目的を一意に識別する。 同じ ID はメッセージに 1 回しか存在できない。 @digits パートは、ユーザ定義の標準ではない ID で必要とされる。

logger は現在のところ timeQuality 標準要素のみを生成する。 RFC 5424 には要素 origin (ip, enterpriseId, software, swVersion パラメータ付き) と meta (sequenceId, sysUpTime, language パラメータ付き) についても 記述されている。 これらの要素 ID は @digits 拡張子なしで指定できる。

--sd-param name=value
構造データ要素のパラメータ (名前と値の組) を指定する。 このオプションは --sd-id の後に使わなければならず、 同じ要素に対して 1 回以上指定できる。 value を囲むクォーテーションが必要で、 かつコマンドラインをエスケープする必要がある点に注意すること。
    logger --rfc5424 --sd-id zoo@123               \
                     --sd-param tiger=\"hungry\"   \
                     --sd-param zebra=\"running\"  \
                     --sd-id manager@123           \
                     --sd-param onMeeting=\"yes\"  \
                     "this is message"
により、以下が生成される:
  <13>1 2015-10-01T14:07:59.168662+02:00 ws kzak - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="218616"][zoo@123 tiger="hungry" zebra="running"][manager@123 onMeeting="yes"] this is message
-S, --size size
メッセージの最大許可サイズを size にする。 デフォルトは 1KiB 文字である。これは、昔から制限として使われており、 RFC 3164 で指定されている。 RFC 5424 で制限は融通が効くようになった。 RFC 5424 では少なくとも 4KiB のメッセージを受信できるので、 これを仮定に置いておくのがよい。

多くの受信プログラムは、syslog プロトコルのタイプによらず、 1KiB 以上のメッセージを受け付ける。 (--rfc5424 が指定された時に限らず) --size オプションは logger に影響を与える。

注意: メッセージサイズの制限は、syslog ヘッダーを含むメッセージ全体の制限である。 ヘッダーサイズは選択したオプションとホスト名の長さによって変わる。 経験則として、ヘッダーは 50 から 80 文字以下である。 最大メッセージサイズを選択する場合、受信プログラムが最大サイズを サポートしているかを確認するのが重要である。 そうしないと、メッセージが切り詰められる。 また、経験則であるが、2 から 4 KiB のメッセージサイズが一般には問題ないが、 大きなメッセージについては動作するかを確かめた方がよい。

--socket-errors[=mode]
Unix ソケット接続のエラーを表示する。 mode の値は、off, on, auto のいずれかである。 mode が auto の場合、logger は init プロセスが systemd であるかを検知し、 もしそうであれば、ブートの早い段階で /dev/log が使えるという仮定をする。 /dev/log が存在しない他の init システムは、 openlog(3) システムコールを使って同様のメッセージングをするので、 エラーにならない。 openlog を使うバージョン 2.26 以前の logger(1) は、Unix ソケットを使って送ったメッセージの消失を検知できない。
デフォルトの mode は auto である。 エラー表示が有効になっていない場合、消失したメッセージは通信されず、 logger(1) の起動で成功した返り値が返される。
-T, --tcp
ストリーム (TCP) のみを使う。 デフォルトでは、接続は /etc/services に定義された syslog-conn ポート (多くの場合 601) に行われる。

どこに接続するかの指定は、--server--socket も参照すること。

-t, --tag tag
ログを出力する各行に、指定した tag を共に記録する。 デフォルトのタグは、端末にログインしているユーザの名前 (または、実効ユーザ ID に基づくユーザ名) である。
-u, --socket socket
システムログのソケットではなく、指定した socket に書き込む。
--
引き数の終わり。 message をハイフン (-) で始められるようにする。
-V, --version
バージョン情報を表示して、終了する。
-h, --help
ヘルプを表示して、終了する。
 

返り値

logger ユーティリティは成功した場合 0 を返し、エラーの場合は 0 より大きい値を返す。  

機能分類と重要度

有効な機能分類は以下のとおり:
auth
authpriv機密に関わる種類のセキュリティ情報
cron
daemon
ftp
kern ユーザ空間プロセスでは生成されない。自動的に user に変換される。
lpr
mail
news
syslog
user
uucp
local0

  〜

local7
securityauth の同義語。使わない方が良い。

有効な重要度は以下のとおり:

emerg
alert
crit
err
warning
notice
info
debug
panicemerg の同義語。使わない方が良い。
errorerr の同義語。使わない方が良い。
warnwarning の同義語。使わない方が良い。

これらの機能分類と重要度の優先順位と意図する目的については、 syslog(3) を参照すること。  

logger System rebooted
logger -p local0.notice -t HOSTIDM -f /dev/idmc
logger -n loghost.example.com System rebooted  

関連項目

journalctl(1), syslog(3), systemd.journal-fields(7)  

準拠

logger コマンドは IEEE Std 1003.2 ("POSIX.2") 互換のはずである。  

著者

logger コマンドは元々カリフォルニア大学で 1983-1993 年に書かれた。 その後 Karel Zak Rainer Gerhards Sami Kerola によって書き直された。  

入手方法

logger コマンドは、util-linux パッケージの一部であり、 Linux Kernel Archive から入手できる。


 

Index

名前
書式
説明
オプション
返り値
機能分類と重要度
関連項目
準拠
著者
入手方法

This document was created by man2html, using the manual pages.
Time: 12:49:37 GMT, August 02, 2019