- -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
-
ヘルプを表示して、終了する。