[Điều này đã được viết một vài năm trước khi áp dụng rộng rãi journald trên các hệ thống systemd và không chạm vào nó. Hiện tại (cuối năm 2018) cả nhật ký và (r) syslog, được mô tả bên dưới, được sử dụng trên các bản phát hành như Debian. Đối với những người khác, bạn có thể phải cài đặt rsyslog nếu bạn muốn sử dụng nó cùng với nó, nhưng việc tích hợp với journald rất đơn giản.]
Tôi sẽ không thảo luận về việc đăng nhập liên quan đến Ubuntu, vì chủ đề được chuẩn hóa cho linux nói chung (và tôi tin rằng hầu hết hoặc tất cả những gì tôi phải nói cũng đúng cho bất kỳ hương vị nào * nix, nhưng không lấy lời của tôi cho điều đó). Tôi cũng sẽ không nói nhiều về "cách đọc nhật ký" ngoài việc trả lời câu hỏi này:
Là giả định thậm chí đúng rằng chúng được viết cho khả năng đọc của con người hay chúng thường được đánh giá và sử dụng bởi các công cụ khác?
Tôi đoán điều đó phụ thuộc vào ứng dụng, nhưng nói chung, ít nhất là liên quan đến những gì đi vào syslog (xem bên dưới), chúng nên có thể đọc được. "Có ý nghĩa với tôi" là một vấn đề khác, lol. Tuy nhiên, chúng cũng có thể được cấu trúc theo cách làm cho việc phân tích cú pháp chúng bằng các công cụ tiêu chuẩn (grep, awk, v.v.) cho các mục đích cụ thể dễ dàng hơn.
Dù sao, trước tiên, có một sự khác biệt giữa các ứng dụng tự ghi nhật ký và các ứng dụng sử dụng bộ ghi hệ thống. Apache theo mặc định là trước đây, mặc dù nó có thể được cấu hình để thực hiện sau này (điều mà tôi nghĩ rằng hầu hết mọi người sẽ coi là không mong muốn). Các ứng dụng ghi nhật ký của riêng chúng có thể thực hiện theo bất kỳ cách nào bằng cách sử dụng bất kỳ vị trí nào cho (các) tệp, vì vậy không có nhiều điều để nói về điều đó. Trình ghi nhật ký hệ thống thường được gọi làsyslog
.
nhật ký hệ thống
"Syslog" thực sự là một tiêu chuẩn được thực hiện với quy trình trình nền được gọi chung là syslogd (d dành cho daemon!). Trình nền syslog chiếm ưu thế hiện đang được sử dụng trên linux, bao gồm cả Ubuntu, là rsyslogd
. Rsyslogd có thể làm được rất nhiều, nhưng khi được cấu hình ngoài hộp trên hầu hết các bản phân phối, nó mô phỏng một syslog truyền thống, sắp xếp các thứ vào các tệp văn bản đơn giản /var/log
. Bạn có thể tìm thấy tài liệu cho nó trong /usr/share/doc/rsyslog-doc-[version]
(hãy cẩn thận, cũng có một /usr/share/doc/rsyslog-[version]
, nhưng đó chỉ là thông báo từ gói nguồn như NEWS
và ChangeLog
). Nếu có, đó là html, nhưng Stack Exchange không cho phép nhúng các liên kết tệp cục bộ:
file://usr/share/doc/rsyslog-doc/index.html
Vì vậy, bạn có thể thử sao chép dán đó. Nếu nó không ở đó, nó có thể là một phần của gói riêng biệt chưa được cài đặt. Truy vấn hệ thống đóng gói của bạn (ví dụ:apt-cache search rsyslog | grep doc
).
Cấu hình nằm trong /etc/rsyslog.conf
, có một trang thủ công, man rsyslog.conf
mặc dù trong khi trang thủ công tạo ra một tài liệu tham khảo tốt, nó có thể ít bị xâm nhập như một lời giới thiệu. May mắn thay, các nguyên tắc cơ bản của cổ phiếu rsyslog.conf phù hợp với những gì của syslog.conf truyền thống, trong đó có nhiều giới thiệu và hướng dẫn xung quanh. Cái này chẳng hạn; những gì bạn muốn lấy từ đó, trong khi nhìn vào rsyslog.conf tại địa phương của bạn, là một sự hiểu biết về các cơ sở và ưu tiên ("ưu tiên" đôi khi được gọi là loglevel), vì đây là một phần của tiêu chuẩn syslog đã nói ở trên. Lý do tiêu chuẩn này rất quan trọng là vì rsyslog thực sự có được nội dung của nó thông qua kernel và những gì kernel thực hiện là tiêu chuẩn.
Liên quan đến các $
chỉ thị trong rsyslog.conf, đây là các lệnh cụ thể của rsyslog và nếu bạn cài đặt gói tài liệu tùy chọn đó, bạn sẽ tìm thấy một hướng dẫn cho chúng rsyslog_conf_global.html
.
Hãy vui vẻ ... nếu bạn tò mò về cách các ứng dụng sử dụng bộ ghi hệ thống, hãy xem man logger
và man 3 syslog
.
Nhật ký xoay
Các phương tiện quy tắc của các bản ghi quay là thông qua một công cụ được gọi là logrotate
(và có một man logrotate
). Phương pháp quy tắc sử dụng logrotate là thông qua cron daemon , mặc dù không phải thực hiện theo cách đó (ví dụ: nếu bạn có xu hướng tắt máy tính để bàn hàng ngày, bạn cũng có thể chỉ cần thực hiện một lần khi khởi động trước khi syslog bắt đầu nhưng, rõ ràng, sau khi hệ thống tập tin được gắn rw).
Có một giới thiệu tốt về logrotate ở đây . Lưu ý rằng logrotate không chỉ dành cho công cụ syslog , nó có thể được sử dụng với bất kỳ tệp nào. Tệp cấu hình cơ sở là /etc/logrotate.conf
, nhưng vì cấu hình có lệnh "bao gồm", nên hầu hết mọi thứ đều đi vào các tệp riêng lẻ trong /etc/logrotate.d
thư mục (ở đây d dành cho thư mục, không phải daemon; logrotate không phải là daemon).
Một điều quan trọng cần xem xét khi sử dụng logrotate là cách ứng dụng sẽ hoạt động lại khi tệp nhật ký của nó bị "xoay" - nói cách khác, được di chuyển - trong khi ứng dụng đang chạy. WRT (r) syslogd, nó sẽ chỉ dừng ghi vào nhật ký đó (tôi nghĩ có một biện minh bảo mật cho việc này). Cách thông thường để giải quyết vấn đề đó là yêu cầu syslog khởi động lại (và mở lại tất cả các tệp của nó), đó là lý do tại sao bạn sẽ thấy một lệnh postrotate
trong các tệp conf logrotate gửi SIGHUP đến daemon syslog.