はじめに
小遣いがなくなると仕事に集中できるのはなぜか、他にやることがないからである:-(。それはさておき/var/log/messagess等、REDHATのrsyslogで出力されるログは「err」とか「warning」のログレベルがデフォルトのままでは表示されません。ここにREDHAT8で表示させる方法をメモっておきます。ちなみにREDHAT7とREDHAT8の間で地味にrsyslog.confの書き方が変わっているので注意が必要です(レガシー形式→非レガシー形式を使用ということらしい)。
ログレベル表示設定例
rsyslog.conf編集
rsyslog.confを編集します。$ vi /etc/rsyslog.conf
で「Use default timestamp format」項の記述(32行目あたり)を書き換えます。
変更前: module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") 変更後: module(load="builtin:omfile" Template="custom_FileFormat")
「load="builtin:omfile"」はデフォルトのテンプレートとしてロードするということです。
Template.conf作成
フォーマットの内容を記載したファイルを作成します。vi /etc/rsyslog.d/Template.conf
「syslogpriority-text」という部分がログレベルを表示するための部分です。ちなみにこのサンプルはプライオリティだけではなく時刻のフォーマットとファシリティの表示もするように変えています
template(name="custom_FileFormat" type="list") { property(name="timestamp" dateFormat="rfc3339") constant(value=" ") property(name="hostname") constant(value=" ") property(name="syslogtag") constant(value=" ") property(name="syslogfacility-text") constant(value=".") property(name="syslogpriority-text") constant(value=":") property(name="msg" spifno1stsp="on" ) property(name="msg" droplastlf="on" ) constant(value="\n") }
サービス再起動
編集が終わったらrsyslogを再起動します。$ systemctl restart rsyslog
その後loggerコマンド$ logger -i -p err -t test.sh TESTTEST
を打ちますと、以下のような感じで/var/log/messagesにログレベル(err)が表示されたログが出力されます。
変更前:Dec 30 23:11:15 SERVER01 test.sh[458689]: TESTTEST 変更後:2022-12-30T23:12:48.686601+09:00 SERVER01 test.sh[458735]: user.err: TESTTEST
補足:エラーレベル
ちなみにsyslogレベルの種類は以下があり、下に行くほどレベルの高い、重大なメッセージになります。
レベル | 内容 |
---|---|
debug | デバッグ |
info | 情報 |
notice | 通知 |
warning | 警告 |
err | 一般的なエラー |
crit | 致命的なエラー |
alert | 緊急に対処すべきエラー |
emerg | 緊急事態 |
以上