Syslog
RSyslog 如何自動接收日誌消息?
相關部分:
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);
事實上,所有高級語言都在這些函式之上為您提供了一個抽象層。