Trường hợp nào `logger` ghi thông điệp của nó vào Arch Linux?


18

Các loggerlệnh ghi vào một entry qua syslog, mà thường đặt dòng đó để một số tập tin như /var/log/messages.

Nếu tôi hiểu tài liệu chính xác trong Arch Linux, tất cả việc ghi nhật ký được thực hiện thông qua systemd, nhưng tôi không thể tìm thấy các loggermục sử dụng journalctl.

  • Chính xác thì điều gì xảy ra với một thông báo được đưa ra loggertrong Arch Linux?
  • Mục nhập nhật ký được lưu trữ ở đâu? (Một grep nhanh gợi ý /var/log/journal/*/system.journal.)
  • Làm thế nào tôi có thể truy cập nhật ký này? (Tôi có cần tùy chọn đặc biệt journalctlnào không?)

Câu trả lời:


15

Bởi vì các thông điệp tường trình không xuất hiện trên tạp chí ở bất cứ đâu , tôi nghi ngờ rằng bạn không có syslog để chuyển tiếp tạp chí được thiết lập chính xác và các tin nhắn chỉ đơn giản là bị bỏ. Vì bạn đang ở trên Arch, điều này rất dễ khắc phục. Đảm bảo rằng syslog-nggói được cài đặt:

pacman -S syslog-ng

Sau đó, đảm bảo rằng nó được kích hoạt khi khởi động:

systemctl enable syslog-ng

Cuối cùng, vì cho phép các dịch vụ không tự động khởi động chúng, hãy khởi động dịch vụ:

systemctl start syslog-ng

Xem trang Arch Wiki này để biết chi tiết.

Dưới đây là một số nền tảng về lý do tại sao vấn đề này xảy ra:

Có một cách nhất định để đăng nhập vào syslog cổ điển, và có một cách nhất định để đăng nhập vào tạp chí systemd mới. Đây là không tương thích; các ứng dụng hỗ trợ nhật ký hệ thống không thể được tạo ra một cách kỳ diệu để hỗ trợ tạp chí - tác giả phải thực hiện rõ ràng tính năng này. Các ứng dụng hỗ trợ tạp chí systemd thường được gọi là hỗ trợ "API gốc" khi chạy trên hệ thống systemd.

Vì API syslog và API journald khác nhau, nên các ứng dụng không hỗ trợ API journald sẽ bị hủy thông điệp nhật ký. Đây là những gì đã xảy ra trong trường hợp của bạn.

Công syslog-ngviệc của gói là dịch các cuộc gọi API syslog thành các cuộc gọi API journald. Theo cách này, các thông điệp nhật ký hệ thống cuối cùng sẽ đưa nó vào tạp chí.


syslog-ngđã được cài đặt nhưng không được kích hoạt, tôi cho rằng journald đã thay thế nó hoàn toàn. Là loggerchỉ có thể nói chuyện với syslog? Cách chính xác để đăng nhập vào journald là gì?
michas

@michas Tôi đã thêm một phần hy vọng sẽ làm rõ điều đó
strugee

"[..] để dịch các cuộc gọi API syslog thành các cuộc gọi API journald" - Theo như tôi thấy, bản dịch chỉ hoạt động theo cách khác: Tôi tìm thấy tất cả các tin nhắn trong / var / log / nhưng chỉ các tin nhắn trong tạp chí.
michas

@michas đó có thể là một cái gì đó mà journald làm, tôi không chắc chắn. syslog-ngchuyển tiếp tin nhắn được gửi đến syslog để journald.
strugee

1
logger foobar;journalctl|grep foobartrên hệ thống của bạn liệt kê một mục?
michas

0

Một số trình nền không viết nhật ký /var/log/trong Arch Linux và cấu hình cho syslog-ngkhác với các câu trả lời khác tôi đã thấy.

syslog-ng.serviceDịch vụ bình thường không có ở đó, nó thực sự được đặt tên syslog-ng@default.servicethay thế.

Điều này sẽ không hoạt động:

# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.

Tôi phải làm điều đó hơi khác nhau theo Arch Wiki :

# systemctl start syslog-ng@default.service
# systemctl enable syslog-ng@default.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ng@default.service → /usr/lib/systemd/system/syslog-ng@.service.
#
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.