シェルのスクリプトからsyslogにログを出力するにはloggerというコマンドが利用可能です。 運用などで重要な操作をシェルスクリプトなどで用意している場合は、シェルスクリプト中でログを出力しておくと、後々操作のエビデンスになるので便利です。
loggerコマンドの基本の書式は以下のようになっています。
logger [option] message
簡単に以下のようなシェルを作って試してみます。(logging.shというファイルで保存)
#!/bin/bash
logger log message here
logger -i log message with option i
logger -s log message with option s
logger -t test log message with tag option t
logger -p auth.crit log message with priority option p
logger -is -t test -p user.notice some event occured.
このシェルを実行したコンソールには以下のような出力があります。
$ ./logging.sh
user1: log message with option s
test[8264]: some event occured.
また、この結果/var/log/messagesには以下のようなログが出力されました。
Feb 12 20:51:08 localhost user1: log message here
Feb 12 20:51:08 localhost user1[8253]: log message with option i
Feb 12 20:51:08 localhost user1: log message with option s
Feb 12 20:51:08 localhost test: log message with tag option t
Feb 12 20:51:08 localhost user1: log message with priority option p
Feb 12 20:51:08 localhost test[8257]: some event occured.
それぞれの解説です。
基本の使い方
logger log message here
=> Feb 12 20:51:08 localhost user1: log message here
最低でもホスト名、ユーザ名とメッセージが記録されます。これだけでも十分役に立ちます。
iオプションをつけるとプロセスIDが出力されます。
logger -i log message with option i
=> Feb 12 20:51:08 localhost user1[8253]: log message with option i
sオプションをつけるとログ上は見た目は変わりません。
logger -s log message with option s
=> Feb 12 20:51:08 localhost user1: log message with option s
しかし、この時、標準エラー出力(このshellスクリプトの場合はコンソール上)にも以下のメッセージが出力されます。
user1: log message with option s
tオプションで任意のタグをつけることができます。 これでログをgrepしたりしやすいログを出力することができます。
logger -t test log message with tag option t
=> Feb 12 20:51:08 localhost test: log message with tag option t
pオプションでファシリティとログレベルを指定することができます。
logger -p auth.crit log message with priority option p
=> Feb 12 20:51:08 localhost user1: log message with priority option p
普段必要になるオプションは大体これぐらいだと思います。 以上のi、s、t、pオプションをつけるとこんな感じになります。
logger -is -t test -p user.notice some notice event occured.
=> Feb 12 20:51:08 localhost test[8257]: some notice event occured.