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/> から入手できる。