logger は Linux や Unix オペレーティング システムで使用されるコマンド ライン ツールで、ローカルの /var/log/syslog
ファイルやリモートの Syslog サーバーにログを追加するために使用されます。
logger コマンドは、ほとんどの Linux ディストリビューションにデフォルトでインストールされています。
logger コマンドは、ほとんどの Linux ディストリビューションにデフォルトでインストールされているので、明示的にインストールする必要はありません。
loggerコマンドは、ほとんどのLinuxディストリビューションにデフォルトでインストールされているので、明示的にインストールする必要はありません。 loggerコマンドの最もよく使われるオプションが、いくつかの説明とともに表示されます。
$ logger -h
代替として、より詳細なヘルプや使用法の情報を得るために、以下のようにloggerコマンドのmanページを見て使用することができます。
$ man logger
loggerコマンドの構文
loggerコマンドはシンプルな構文で、最初にオプションを指定し、次にSyslogに送信したいログやメッセージを指定します。
logger OPTIONS LOG
- `OPTIONS`は、リモートサーバー、ポート、ログ機能などの属性を設定するための単一または複数のオプションです。
- `LOG`は、追加または送信したいログメッセージです。
Linux Syslog
Syslogメカニズムは、Linuxのログ記録の重要な部分です。 Ubuntu、Debian、CentOS、Mint、RedHat、Suse などのほとんどの Linux ディストリビューションでは、/var/log
ディレクトリの下にログ ファイルが保存されています。 このディレクトリには、auth、MySQL、apacheなど、さまざまな種類のログがあります。 Syslogは一般的なログファイルで、システムやサービスなどに関連するログを保存するためのシステムです。 syslog
ファイルは、以下のようにtailコマンドで見ることができます。
$ tail /var/log/syslog
Print Logs From Syslog
syslogファイルにログを追加する前に、現在のsyslogファイルを印刷することは非常に有益です。 さまざまなコマンドを使って、syslogファイルを印刷することができます。 tail
/var/log/syslog
から30行を表示します。
$ tail -n 30 /var/log/syslog
Add Log To Syslog File
まず、loggerコマンドの簡単な例から始めましょう。 ここでは、loggerコマンドに何のオプションも与えずに、syslogファイルに1行を追加します。 以下の例では、「This is just a simple log line」という行をsyslogファイルに追加します。 そして、tailコマンドを使ってリストアップします。
$ logger "This is just a simple log line"
下部にリストアップされているファイルの最後にログが追加されていることがわかります。
- `Feb 26 01:20:47`は、ログがsyslogファイルに追加されたときのタイムスタンプまたは日付情報です。
- `poftut-com` はシステムの名前です。
- `ismail` はユーザーまたはロガーの名前です。
Specify Log Priority or Facility
一般的に、ログはログを作成するリソースによって優先されます。 これは、ログを分類するためのファシリティとも呼ばれます。 優先度やファシリティを指定するには、-p
--priority
user.notice
となります。
$ logger -p "local3.info" "This is just a simple log line"
Specify Remote Syslog Server IP Address
デフォルトでは、loggerコマンドは与えられたログラインをローカルシステムの/var/log/syslog
ファイルに保存します。 しかし、これは常にそうとは限りません。 エンタープライズ環境では、ログは中央のログサーバーに集められ、管理されるべきです。 IPアドレスやホスト名を指定して、指定されたログをリモートサーバーに送信するためにloggerコマンドを使うことができます。
-n
--server
オプションを使用して、リモート ログ サーバーに送信します。 UDPは、ログファイルの転送を高速かつ低リソースで簡単に行うことができます。 しかし、UDPではTCPのような完全な信頼性は得られません。 -T
--tcp
オプションを使用することで、デフォルトの転送プロトコルUDPをTCPに変更することができます。
$ logger -n 192.168.1.10 -T "This is just a simple log line"
リモートSyslogサーバーのポート番号を指定する
ローカルからリモートシステムにログを送信する際、デフォルトのSyslogのポートはUDPとTCPの両方のプロトコルで514となっています。
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
Redirect Command Output As Log
Linuxには、動作を正確に記録する多くのツールがあります。 これらのコマンドをログとして出力するには、loggerコマンドを使用します。ここでは、bashシェルのバックティックを使ってコマンドを囲みます。 以下では、who
というコマンドをsyslogに記録します。
$ logger `who`
syslogの最後の行には、whoコマンドの出力があり、ユーザー名、コンソール番号、日付が含まれています。 console number, and date of the currently logged in user.
指定したファイルをログに記録する
テキストファイルの内容を一行ずつsyslogファイルに記録することができます。 -f
hostnames
という名前のファイルをログに記録します。
$ logger -f hostnames
ログサイズの設定・制限
ログはシンプルな情報を作成するためのものです。 そのため、データ量の多い行がある場合は、翻訳するか、制限を設ける必要があります。 そこで、--size
オプションと設定したい文字数を指定することで、ログの文字数に制限を設けることができます。 以下の例では、文字数を10に設定しています。
$ logger --size 10 123456789012345678901234567
空行を無視する
ファイルからログを読み込む際に、空行があるかもしれません。