私は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
これは私が持っているならkernel.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と一致することを確認することによって?
私のsyslog.confにはifdefはありませんが、まだ動作します。 ifdefが必要ですか?
答え1
これらのルールは、デフォルトでは実行時に各メッセージに適用されるフィルタを定義するため、現実的に同じ宛先/ファイルに重複メッセージがあってはなりません。
セミコロン( ''; '')区切り文字を使用して、単一の操作に複数のセレクタを指定できます。 「セレクター」フィールドの各セレクターが前のセレクターをオーバーライドすることに注意してください。
ただし、別のファイル(コンソールを含む)に送信された同じメッセージを受信して受信できます。
の場合
*.emerg *
これはsyslogのすべてのユーザーの略語であり、すべてのユーザーに適用されます。
すべてログインしています
緊急メッセージは通常、現在オンラインのすべてのユーザーにシステムに異常が発生したことを知らせるために送信されます。このwall(1)機能を指定するには、アスタリスク(「*」)を使用します。
したがって、kernel.emergでは実際にはすべてのユーザーと/var/adm/messagesに送信されますが、/var/adm/messagesには1行しかありません。
ネイティブBSD syslogdの動作は、指定された操作に基づいて指定された優先順位以上のすべてのメッセージを記録することです。
マニュアルsyslog.conf
ページから引用:
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つ以上の行を追加します(名前は任意です。複数のリモートホストが定義されている場合は、必要な名前を使用できます)。