3

私はperlでこのようなメッセージを記録しています -

syslog ("LOG_INFO", "this is info");
syslog ("LOG_WARNING", "this is warning");

これらのメッセージを見ると、これが表示されます-

Nov 15 20:20:47 ubuntu tag-0.0.2[13399]: this is info
Nov 15 20:20:47 ubuntu tag-0.0.2[13399]: this is warning

syslog メッセージの「ubuntu」という単語は、たまたまローカル ホストのホスト名です。

ローカルにログを記録し、ホスト名を指定する方法はありますか?

私のアプリは、他のホストからのデータを処理し、それらに関する情報をログに記録します。メッセージをログに記録するときにホスト名を指定できると便利です。これにより、ホスト名に基づいてログを簡単にフィルター処理できるため、サードパーティのツールを簡単に使用できます。

ところで、追加の質問を追加できる場合は、ログにメッセージのレベルが表示されないのはなぜですか? ログに記録している情報 syslog メッセージに「情報」が表示されるとは思わないでしょうか?

4

2 に答える 2

2

おそらく、このタスクを実行する最も簡単な方法はsyslog、 をネットワーク経由でメッセージを受信するように設定することです。の場合rsyslog、これは多くの場合次の/etc/rsyslog.confとおりです。

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

ここではUDPを使用しています。これは、ほぼすべてのsyslogデーモンで簡単に実行でき、簡単であることを実証するためです。

$ echo "<0>Oct 11 22:14:15 mymachine testing" | nc -u localhost syslog
^C
$ tail -1 /var/log/syslog
Oct 11 22:14:15 mymachine testing

つまり、RFC のセクション 4.1.1 で<nnn>説明されているように、ファシリティと優先度を表します。タイムスタンプは 4.1.2 で高度に指定されています: 要するに、3 文字の英語の月の省略形で、先頭に -- 代わりに先行スペース:ではなく(スペースはコード ブロックで折りたたまれるため、アンダースコアが使用されます)。ホスト名にドメイン部分を含めることはできません。IP アドレスは、IPv4 と IPv6 の両方で問題ありません。0Aug__8Aug_8

などのUnix ドメイン ソケット ( unix(7))を使用することもできます/dev/log。それはUDPよりも信頼性があります。

于 2011-11-16T02:59:47.570 に答える
0

残念ながら、ローカルでログを記録している場合、ホスト名を指定することはできないと思います。

また、ログの前に「情報」が表示されることは想定されていません。ログ レベルはメッセージの送信先に影響します (これは /etc/syslog.conf でカスタマイズできます)。デフォルトでは、LOG_INFO と LOG_WARNING は /var/log/messages.log に移動し、LOG_EMERG と LOG_ERR は /var/log/errors.log に移動します。レベルは出力に表示されません。

于 2011-11-16T03:05:44.867 に答える