rsyslogが受け取るログがローカルとリモートで違う

4月21日のエントリで、rsyslog経由でとったログのあたま一文字が消えるという現象について書きました。
apacheのログを標準出力でperlスクリプトに流して、rsyslogで書き出したら頭の一文字が消えたって件です。
その際はrsyslog.confのMsgテンプレートを以下にして解決したなぁと思っていたんですが、

$template MsgFormat,    "%msg:1:$%\n"

ところがこれが違ったんですね。

ローカル(rsyslogが動作して実際のログを書き出すホスト)では、これでいいんですが、リモートでこんなふうにログを飛ばしているホストから来たログでは逆に頭に一文字空白ができてしまう。

local0.debug            @@172.16.xx.xx:514
local1.debug            @@172.16.xx.xx:514

現象はこんな感じ。

ホスト 実行コマンド 結果
localhost echo "12345" | logger -p local0.debug "12345"
リモート echo "12345" | logger -p local0.debug " 12345"

そうするとやっぱり頭に一文字空白が入ってくるほうが正しくて、ローカルでやった時のビヘイビアがおかしいってことになります。
で、しばらくrsyslog.confを眺めていて怪しそうなディレクティブを発見。
これをコメントアウトして解決しました。

$OmitLocalLogging on

ローカルのメッセージはimjoruanl経由だからなんとかかんとか。
まぁよくわからないけど解決したからよし。