對于linux上的服務幾乎都會有日志文件,日志文件是來記錄軟件運行狀態。通過日志文件,我們可以獲取許多有用的信息,比如通過nginx的日志文件,我們可以統計網站每日ip數量、pv數等。另外,如果軟件運行出問題,我們也可以通過日志文件信息來定位錯誤來源。所以說,日志文件也是軟件的重要組成部分。
常見日志文件
linux系統中,在/var/log/目錄下記錄著許多有用的日志文件。
-
/var/log/cron 記錄與定時任務相關的信息
-
/var/log/dmesg 開機內核信息
-
/var/log/btmp 記錄錯誤登陸的信息,這個文件不能通過vi來查看,可以用lastb命令查看。
-
/var/log/lastlog 記錄每個用戶最后一次登陸情況,這個文件不能通過vi查看,使用lastlog命令查看
-
/var/log/maillog 記錄郵件信息
-
/var/log/message 記錄系統重要的信息
-
/var/log/recure 記錄驗證和授權方面的信息,只要涉及賬號和密碼的程序都會記錄
-
/var/log/wtmp 永久記錄用戶的登陸、退出信息,除此之外還會記錄關機、重啟、開機信息。使用last命令查看
-
/var/log/ulmp ?記錄當前登陸用戶信息。可以用w、who命令查看
與日志文件相關的服務
關于日志文件的產生,主要分為兩種方式,一種是軟件自身生成日志信息,比如apache、nginx軟件,另一種是通過linux系統的日志相關服務來生成日志信息的。對于系統管理日志的軟件,主要有三個:
-
systemd-journald.service
-
rsyslog.service
-
logrotate
基本上,有systemd管理的服務,啟動過程及運行過程中產生的一些信息會被systemd-journald以二進制格式記錄下來(存放在內存中),之后再將信息發給rsyslog進行進一步記錄。而對于logrotate服務,它是用來對日志進行切割和輪替的,防止單個日志文件過大,以及日志文件過多的問題。
所以,對于以上三個服務的分工是這樣的,首先systemd-journald獲取信息并記錄到內存中,之后將信息發送給rsyslog,rsyslog會將信息存放在日志文件中,最后,使用logrotate對日志文件進行輪替管理。