Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

       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) を使用するとよい。

              なお、システムのロギングを下支えしているものが (たとえば、 /dev/log  をリッスンして
              いる systemd が)、ローカルソケットの資格情報 (credentials) に従って、メッセージ中の
              指定された PID を上書きしてしまうことがあるのに注意していただきたい。logger  は、そ
              うしたソケットの資格情報の値を、指定された    id   にすることができるわけだが、それ
              は、ユーザがルート権限を持ち、しかも指定された PID を持つプロセスが存在するときだけ
              であって、 さもなければ、ソケットの資格情報は変更されず、その問題は暗黙裡に無視され
              るのである。

       --journald[=file]
              systemd  のジャーナルに書き込みをする。記入事項  (entry)  は、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) のような、他のオプションの値を無視すること
              に注意していただきたい。   だから、優先度が必要なら、それを入力に含めなければならな
              い。つまり、PRIORITY フィールドを使用するのである。なお、単に journalctl を実行する
              だけだと、MESSAGE              フィールドしか表示されない。残りのフィールドも見るに
              は、journalctl --output json-pretty を使用すればよい。

              MESSAGE に改行を入れるには (訳注: 言い換えれば、複数行にするには)、MESSAGE を複数回
              指定する。これは、特例処理であり、複数回現れるのが他のフィールドの場合は、配列とし
              て journal に格納されることになる。

       --msgid msgid
              RFC5424 の MSGID フィールドを指定する。msgid 内ではスペース文字が使えないことに注意
              していただきたい。 このオプションが有効なのは、--rfc5424 も一緒に指定したときだけで
              ある。 そうでない場合は、黙って無視される。

       -n, --server server
              システムログのソケットではなく、指定されたリモートの syslog サーバ、server に書き込
              む。  --udp--tcp  が指定されていない場合、logger  は、まず UDP を使用しようと
              し、それに失敗すると、TCP 接続を試みる。

       --no-act
              ログメッセージをシステムログに書き込むこと以外のすべてを実行し、 その後、ジャーナル
              への接続を切る。このオプションは、テストのために   --stderr  と一緒に使うことができ
              る。

       --octet-count
              メッセージの送信に RFC 6587  のオクテット計算フレーミングメソッド  (octet  counting
              framing   method)  を使用する。このオプションを使用しない場合、デフォルトのメソッド
              は、UDP ではノーフレーミングであり、TCP では  RFC6587  の非透過フレーミング  (octet
              stuffing としても知られる) である。

       -P, --port port
              指定された port を使用する。このオプションが指定されない場合、 ポートはデフォルトが
              使われる。すなわち、UDP接続では syslog、TCP 接続では syslog-conn である。

       -p, --priority priority
              指定された優先度 priority でログにメッセージを記入する。 優先度は、数値で指定しても
              よく、facility.level  の組み合わせで指定してもよい。たとえば、-p local3.info と指定
              すると、ファシリティが  local3、レベルは  informational  としてメッセージが記録され
              る。デフォルトは user.notice である。

              [訳注]  ファシリティ  (facility) というのは、わかりにくい言葉だ。 だが、logger コマ
                      ンドでは、ファシリティの値のそれぞれを、出力するメッセージの分類 (対象分野)
                      ぐらいに考えておけばよいのではないかと思う。ファシリティが   mail  なら当然
                      mail    関係だし、auth     ならセキュリティや認証関係のメッセージということ
                      だ。user や local は、その他といったところだろうか。レベル (level) は「重大
                      度、深刻度」。 そして、こうしたファシリティとレベルにより、/etc/syslog.conf
                      (または /etc/rsyslog.conf) の設定に基づいて、出力先のログファイルが決まるわ
                      けである。

                      ファシリティやレベルの数値による表現については、 「ファシリティとレベル」セ
                      クションをご覧いただきたい。

                      なお、手元で試してみたところでは、この  --priority オプションでは、レベルを
                      数値で指定することはできるが、 ファシリティを数値で指定することはできないよ
                      うだ。  数値をそのまま使うのも、--prio-prefix のように 8 倍してレベルを足す
                      のも、うまく行かなかった。

       --prio-prefix
              標準入力から読み込むすべての行で sysylog の接頭辞 (prefix) を捜す。この接頭辞は、山
              かぎカッコ (<>) で囲まれた 10 進数であり、 ファシリティとレベルの両方をエンコードし
              たものである。数値は、ファシリティを (訳注: その数値表現を) 8  倍し、それにレベルを
              加えて作る。たとえば、local0.info  なら、ファシリティは 16、レベルは 6 なので <134>
              になる。

              接頭辞がファシリティを含んでいない場合、ファシリティは、-p オプションで指定したもの
              がデフォルトである。  同様に、接頭辞が全く指定されていない場合、その行は、-p で指定
              された優先度 priority を使ってログに記録される。

              このオプションは、コマンドライン引き数として指定したメッセージに対しては働かない。

              [訳注]  別の角度から説明すると、 これは、入力するメッセージの行中でファシリティとレ
                      ベルを指定する方法だと言えるだろう。 メッセージをファイル、または標準入力か
                      ら入力するとき  (コマンドラインの引き数としてではない)、logger   コマンドに
                      --prio-prefix オプションを付け、メッセージ各行の行頭には <134> などと書いて
                      おく。そうすると、logger がその行を優先度 local0.info  のメッセージなどと解
                      釈して、適切なログファイルに送ってくれるのである。 <134> などの接頭辞がログ
                      に書き込まれるわけではない。

       --rfc3164
              リモートサーバにメッセージを送るのに RFC 3164 の BSD syslog プロトコルを使用する。

       --rfc5424[=without]
              リモートサーバにメッセージを送るのに RFC 5424 の syslog プロトコルを使用する。 指定
              が任意の  without という引き数には、notq, notime, nohost という値をコンマで区切った
              リストが使用できる。

              notq   という値は、送信するメッセージに時間品質構造化データ    (the    time-quality
              structured  data)  を記入しないようにする。  この時間品質情報が示すのは、ローカルク
              ロックが (訳注: 信用できる外部の時刻サーバとメッセージ送信時に)  同期されていたかど
              うか、及び、タイムスタンプが  (訳注: 同期と同期の間に) ずれるかもしれない最大のマイ
              クロセコンド数である。 時間品質は、--sd-id timeQuality が指定された場合にも自動的に
              抑制される。

              notime という値は (暗黙裡に notq も設定する)、ISO-8601 フォーマットの省略なしの送信
              側タイムスタンプを記入しないようにする。 マイクロセコンドやタイムゾーンを含むフォー
              マットのことである。

              nohost という値は、メッセージのヘッダに gethostname(2) の情報を入れないようにする。

              RFC 5424 プロトコルは、バージョン 2.26 以来、logger のデフォルトになっている。

       -s, --stderr
              メッセージをシステムログだけでなく、標準エラーにも出力する。

       --sd-id name[@digits]
              RFC  5424 メッセージヘッダで使う構造化データ要素の識別名 (a structured data element
              ID) を指定する。新しい要素を導入するには、このオプションを --sd-param  の前で使わな
              ければならない。構造化データ要素の数には上限がない。ID (識別名。name には @digit が
              続くこともある)      は、大文字小文字を区別し、要素のタイプと用途を一意に同定してい
              る。同じ  ID は、一つのメッセージに 1 回しか現れてはならない。@digit の部分は、ユー
              ザが定義した非標準的な ID では必須である。

              現在 logger が (訳注: --rfc5424 オプションを指定したときにデフォルトで)  生成するの
              は、標準要素 timeQuality のみである。RFC 5424 には、そのほか origin 要素 と meta 要
              素が記述されている (前者には、ip, enterpriseId,  software,  swVersion  といったパラ
              メータが、後者には、sequenceId, sysUpTime, language といったパラメータがある)。こう
              した要素 ID は、@digits という接尾辞なしで指定することができる。

       --sd-param name="value"
              構造化データ要素のパラメータを、名前と値の組み合わせで指定する。 このオプションを使
              うときは、--sd-id  の後ろに置かなければならない。なお、同じ要素について、2 回以上指
              定することもできる。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 3167 で規定されている。なお、RFC 5424
              で、この上限は融通が利くようになった。 受信側が RFC 5424 に準じているならば、少なく
              とも 4KiB のメッセージを処理できると考えて、まず間違いがない。

              どんなタイプの syslog プロトコルを使っていようと、たいていの受信側が 1 KiB より大き
              いメッセージを受け入れる。従って、この  --size オプションが (--rfc5424 を使用した場
              合だけではなく) あらゆる場合に logger に対して働くことになる。

              注意: メッセージサイズの上限というのは、syslog のヘッダを含む、メッセージサイズ全体
              の上限である。 ヘッダのサイズは、選択したオプションやホスト名の長さによって変わって
              くる。 大雑把に言って、ヘッダが 50 から 80 文字 (characters) より長いことはあまりな
              い。メッセージの最大ザイズを選択するときは、 受信側の方でもその最大サイズをサポート
              するようにしておくことが重要である。 さもないと、メッセージは、尻尾がちょん切られて
              しまうかもしれない。  もう一度大雑把に言うと、2  から  4  KiB  のメッセージサイズな
              ら、たいてい問題がないはずだ。 それより大きい場合は、ちゃんと動作するか確認するべき
              である。

       --socket-errors[=mode]
              Unix  ソケット接続に関するエラーを表示する。mode の値は、off, on, auto の何れかであ
              る。modeauto の場合、logger は、init プロセスが systemd  かどうか検出しようとす
              る。そして、もしそうならば、  /dev/log がブートの早い段階から使用可能になっていると
              想定する。 他の init システムで、/dev/log  を欠いている場合、ここで述べているような
              エラーが起きることはない。そのへんは、openlog(3) システムコールを使用するメッセージ
              処理と同じことである。logger(1) も、 バージョン 2.26 より前は openlog  を使用してい
              た。そのため、Unix ソケットに送信したメッセージが消失しても、当時は検出できなかった
              のである。

              デフォルトの mode  は、auto  である。エラー表示が有効ではないと、メッセージの消失が
              あっても、通知されず、logger の実行は、成功のステータスで終わることになる。

       -T, --tcp
              ストリーム   (TCP)   のみを使用する。デフォルトでは、/etc/service  で定義されている
              syslog-conn ポートに接続が試みられる。それは、たいてい 601 番である。

              接続先の指定については、--server--socket もご覧いただきたい。

       -t, --tag tag
              ログに記録されるすべての行に tag という指標を付ける。デフォルトのタグは、端末にログ
              インしているユーザの名前 (あるいは、実効ユーザ ID に基づいたユーザ名) である

       -u, --socket socket
              システムログのソケットの代わりに、指定された socket に書き込む。

       --     引き数のリストの終わりを示す。これを使えば、message をハイフン (-) で始めることがで
              きる。

       -V, --version
              バージョン情報を表示して終了する。

       -h, --help
              ヘルプを表示して終了する。

終了ステータス

       logger  ユーティリティは、実行に成功すると、0  の終了ステータスで、エラーが起きた場合は、0
       より大きい終了ステータスで終了する。

ファシリティとレベル

       [訳注] 以下、ファシリティやレベル名の後ろに、カッコに入れて、数値による表現を付けておく。
              こうした数値は、--prio-prefix で使用できる。

       有効なファシリティ名 (メッセージの分類):

              auth(4)

              authpriv(10)   取り扱いに注意を要するセキュリティ情報用
              cron(9)
              daemon(3)
              ftp(11)
              kern(0)        ユーザスペースのプロセスからは生成できない。たとえ kern を指定しても、自
                             動的に user に変更される
              lpr(6)
              mail(2)
              news(7)
              syslog(5)
              user(1)
              uucp(8)
              local0(16)
                to
              local7(23)
              security       auth の同義語で、非推奨

       有効なレベル名 (重大度):

              emerg(0)
              alert(1)
              crit(2)
              err(3)
              warning(4)
              notice(5)
              info(6)
              debug(7)
              panic        emerg の同義語で、非推奨
              error        err の同義語で、非推奨
              warn         warning の同義語で、非推奨

       こうしたファシリティやレベルの優先順位や目的については、syslog(3) を参照していただきたい。

準拠

       この logger コマンドは IEEE Std 1003.2 ("POSIX.2") に準拠しているはずである。

用例

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

作者

       オリジナルの  logger コマンドが書かれたのは、カルフォルニア大学で、1983 年から 1993 年のこ
       とだった。その後、次の者たちが書き直した。

       Karel Zac <kzak@redhat.com>
       Rainer Gerhards <rgerhards@adiscon.com>
       Sami Kerola <kerolasa@iki.fi>

関連項目

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

入手方法

       この   logger   コマンドは   Util-linux   パッケージの一部であり、Linux   Kernel   Archive
       <https://www.kernel.org/pub/linux/utils/util-linux/> から入手できる。