私はSolaris 10を使用していますが、この行を見ました/etc/syslog.conf
*.err;kern.debug;daemon.notice;mail.crit;auth.debug;local2.notice /var/adm/messages
つまり、私が認証エラー/var/adm/message
、次の理由によりエラー メッセージが 2 回表示されます:
*.err
auth.debug
次のような別の行もあるとします。
*.emerg *
*.err;kern.debug;daemon.notice;mail.crit;auth.debug;local2.notice /var/adm/messages
つまり、私がカーネル.emerg、2回ログに記録されます/var/adm/messages
。
*.emerg * and
kern.debug /var/adm/messages
?
=======
追加された
auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost)
syslog はどのようにしてこのマシンがログホストであるかどうかをチェックするのでしょうか? /etc/hosts で「loghost」エイリアスをチェックし、それがマシンの IP と一致するかどうかを確認します。
ifdef なしの syslog.conf がありますが、それでも動作します。ifdef は必要ですか?
答え1
ルールは主に、実行時に各メッセージに適用されるフィルターを定義するため、実際には、同じ宛先/ファイルに重複したメッセージが存在することはありません。
セミコロン ('';'') 区切り文字を使用して、1 つのアクションに複数のセレクターを指定できます。セレクター フィールド内の各セレクターは、前のセレクターを上書きできることに留意してください。
ただし、コンソールを含む異なるファイルに同じメッセージを送信することは可能です。
の場合
*.emerg *
これは syslog 内のすべてのユーザーへの省略形であり、すべてのユーザーに適用されます。
全員がログインしました
緊急メッセージは、システムで異常が発生していることを通知するために、現在オンラインになっているすべてのユーザーに送信されることがよくあります。この wall(1) 機能を指定するには、アスタリスク (''*'') を使用します。
したがって、実際、kernel.emerg では、すべてのユーザーと /var/adm/messages に同時に送信されますが、/var/adm/messages では 1 行だけになります。
オリジナルの BSD syslogd の動作では、指定された優先度以上のすべてのメッセージが、指定されたアクションに従ってログに記録されます。
syslog.conf
man ページからの引用:
ifdef については、例を挙げます:
auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost)
LOGHOST が定義されている場合 (つまり、この syslog が LOGHOST である場合)、ログ/メッセージは /var/log/authlog に送信され、定義されていない場合は @loghost に送信されます。
ifdefに関しては必須ではないが、LOGHOSTに関しては、このページこれは、/etc/hosts ファイルから取得したマシンの名前です (または DNS の可能性もありますが、テストのみ)
/etc/hosts (./inet/hosts) を編集し、ログホストの IP アドレスを定義する 1 行または複数行を追加します (名前は任意です。複数のリモート ホストが定義されている場合は、任意の名前を使用できます)