'logger' gửi dữ liệu đến ổ cắm Unix /dev/log
. (Đó là một ổ cắm mặc dù đang ở trong/dev.)
Trên hầu hết các bản phân phối Linux, ổ cắm này là không phải thuộc sở hữu của một daemon nhật ký hệ thống truyền thống nữa – đầu kia của nó không thực sự chuyển trực tiếp tới rsyslog. Thay vào đó, ổ cắm /dev/log được sở hữu bởi systemd-journald dịch vụ vẫn đang chạy và nhận tin nhắn.
# bộ nhiệt áp -v /dev/log
LỆNH TRUY CẬP PID NGƯỜI DÙNG
/run/systemd/journal/dev-log: root 1 F.... systemd
root 304 F.... systemd-journal
(Lưu ý rằng init cũng giữ ổ cắm — nếu journald bị dừng, nhưng có một số hoạt động trên ổ cắm, init sẽ tự động khởi động lại dịch vụ—¦ giống như 'inetd' đã làm trong quá khứ đối với các dịch vụ TCP.)
Systemd-journald lưu trữ các bản ghi trong /var/log/journal mà bạn có thể đọc bằng cách sử dụng nhật kýctl -f
thay vì 'tail -f' thông thường (chúng ở định dạng nhị phân được lập chỉ mục). Thông thường, các tin nhắn qua/dev/log sẽ tiếp tục được ghi ở đó ngay cả khi rsyslogd ngừng hoạt động.
$logger Xin chào
$ tạp chí -n 1
Ngày 12 tháng 7 18:12:26 ember root[951422]: Xin chào
Trong các hệ thống như vậy, các gói rsyslogd và syslog-ng chỉ nhận chuyển tiếp tin nhắn từ systemd-journald, không phải trực tiếp từ các chương trình.Chúng hoạt động bằng cách lắng nghe ở một ổ cắm khác (bên trong /run/systemd), nơi mà journald chuyển tiếp tất cả các thông báo â hoặc bằng cách đọc trực tiếp các tệp nhật ký nhị phân từ /var/log/journal.
(Thông thường, quyền truy cập tệp .journal trực tiếp được ưu tiên hơn vì nó cho phép rsyslogd thu thập các trường bổ sung có trong chương trình, nếu không sẽ bị mất khi sử dụng tính năng chuyển tiếp thư dựa trên ổ cắm.)
Nếu bạn trỏ 'logger' vào một ổ cắm Unix không chấp nhận thông báo, thì trên thực tế, nó sẽ hiển thị thông báo lỗi như sau:
$ python -c "từ socket nhập *; socket(AF_UNIX, SOCK_DGRAM).bind('/tmp/log')"
$ logger -u /tmp/log Xin chào
logger: socket /tmp/log: Kết nối bị từ chối