Syslog

RSyslog 如何自動接收日誌消息?

  • February 8, 2013

相關部分:

anisha@linux-trra~> sudo cat /var/log/messages
Aug 29 13:04:22 linux kernel: imklog 5.6.3, log source = /proc/kmsg started.
Aug 29 13:04:22 linux rsyslogd: [origin software="rsyslogd" swVersion="5.6.3" x-pid="1879" x-info="http://www.rsyslog.com"] start
Aug 29 13:04:22 linux kernel: [7.585951] type=1400 audit(1346225659.436:4): apparmor="STATUS" operation="profile_load" name="/sbin/syslog-ng" pid=807 comm="apparmor_parser" Aug 29 13:04:22 linux kernel: [7.667712] type=1400 audit(1346225659.518:5): apparmor="STATUS" operation="profile_load" name="/sbin/syslogd" pid=830 comm="apparmor_parser"

我無法通過ps -el.

  • 程序如何自動知道它們必須向 RSyslog 發送消息?
  • 是不是所有程序都將它們的消息轉儲到一個地方,而 RSyslog 會選擇相關的?
  • Syslog 的手冊頁說 Syslog 從 /dev 中的套接字讀取其消息。那麼,它與上述兩點有何關聯?

預設情況下,所有 syslog 守護程序從以下位置讀取傳入消息: /dev/log

此外,syslog 可以綁定到埠 514 上的 UDP 套接字。請參閱 /etc/services::

$ cat /etc/services | grep syslog
syslog          514/udp

第二個主要用於在 syslog 守護程序之間傳遞日誌。即每個集群一台日誌伺服器。

作為程序員,您不會直接寫入 /dev/log,而是呼叫 posix 函式syslog::

#include <syslog.h>

void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);

事實上,所有高級語言都在這些函式之上為您提供了一個抽象層。

引用自:https://unix.stackexchange.com/questions/64158