ab’s blog

インフラの呟きです。

rsyslog ログレベル(プライオリティ)を表示する。(REDHAT8)

hahahahahaha

はじめに

小遣いがなくなると仕事に集中できるのはなぜか、他にやることがないからである:-(。それはさておき/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 緊急事態

以上