Nếu bạn phải sử dụng tiêu chuẩn
/tiêu chuẩn
, bạn có thể sử dụng sd-daemon
tiền tố đăng nhập.
chuẩn bị của bạn tiêu chuẩn
với <3>
để gửi một LỖI
sự ưu tiên nhật ký
nhật ký.
sử dụng của bạn log-test.sh
và log-test.service
:
#!/bin/bash
>&2 echo "<3>Đây là LỖI"
echo "Đây là THÔNG TIN"
thoát 0
Và tạp chí
đầu ra:
$ journalctl -u log-test -p 3
Ngày 02 tháng 5 01:22:58 host.example.com log-test.sh[29909]: Đây là LỖI
Nếu là của bạn ưa thích-ứng dụng
có bất kỳ API nào để ghi vào nhật ký hệ thống
, bạn có thể sử dụng nó để ghi vào UNIX datagram /dev/log
(thường có thể ghi theo mặc định và đăng nhập vào nhật ký
) thay vì tiêu chuẩn
/tiêu chuẩn
. Sử dụng thẻ nhật ký hệ thống để xác định ưa thích-ứng dụng
, ưu tiên nhật ký hệ thống cho lỗi
hoặc thông tin
tùy thuộc vào nhu cầu của bạn và bất kỳ cơ sở nhật ký hệ thống nào.
Ví dụ, trong Bash chúng ta có thể sử dụng tiều phu
:
# gửi tin nhắn INFO tới tạp chí
$ logger -t Fancy-app -u /dev/log -p user.info "Đây là THÔNG TIN"
# gửi thông báo LỖI tới tạp chí
$ logger -t Fancy-app -u /dev/log -p user.error "Đây là LỖI"
# hiển thị tin nhắn nhật ký cho ứng dụng ưa thích
$ journalctl -t ứng dụng ưa thích
Ngày 02 tháng 5 01:23:38 host.example.com ưa thích ứng dụng [27302]: Đây là THÔNG TIN
Ngày 02 tháng 5 01:23:39 host.example.com ưa thích ứng dụng [27303]: Đây là LỖI
# hiển thị các thông báo LỖI được ghi nhật ký cho ứng dụng ưa thích
$ journalctl -t ưa thích-ứng dụng -p 3
Ngày 02 tháng 5 01:23:39 host.example.com ưa thích ứng dụng [27303]: Đây là LỖI
Lưu ý rằng trong hầu hết các distro nhật ký
các mục thường được chuyển tiếp đến trình nền nhật ký hệ thống cục bộ (syslog-ng
, rsyslog
, ...), vì vậy có thể kiểm tra các bộ lọc nhật ký hệ thống của bạn hoặc có thể sử dụng cục bộ0
...địa phương7
cơ sở.
Chúng tôi có nhiều ứng dụng sản xuất (bên thứ nhất và bên thứ ba) không đăng nhập vào vùng chứa và chỉ đăng nhập vào thiết bị xuất chuẩn cho INFO và thiết bị xuất chuẩn cho nhật ký LỖI (tức là chỉ có 2 ưu tiên nhật ký: THÔNG TIN | LỖI).
Hầu hết các công cụ chứa sẽ có thể đăng nhập vào nhật ký hệ thống. Nếu không biết công cụ chứa của bạn, tôi sẽ sử dụng Docker làm ví dụ.
Docker có trình điều khiển ghi nhật ký hệ thống có thể được sử dụng để gửi thông báo nhật ký bằng định dạng nhật ký hệ thống tới bất kỳ mục tiêu nhật ký hệ thống nào. Bạn sẽ có thể đăng nhập vào nhật ký
với một cái gì đó như:
docker chạy \
--log-driver syslog \
--log-opt syslog-address=unix:///dev/log \
--log-opt syslog-facility=người dùng \
--log-opt tag=fancy-app \
ưa thích-ứng dụng: mới nhất
Docker cũng có trình điều khiển ghi nhật ký có sẵn. Ví dụ:
docker chạy \
--log-driver journald \
--log-opt tag=fancy-app \
ưa thích-ứng dụng: mới nhất
Cả hai trình điều khiển đăng nhập (nhật ký hệ thống và nhật ký) hỗ trợ tách giữa tiêu chuẩn
và tiêu chuẩn
; I E. tiêu chuẩn
tin nhắn sẽ được ghi lại với THÔNG TIN
ưu tiên và tiêu chuẩn
tin nhắn sẽ được ghi lại với LỖI
sự ưu tiên.
Triết lý và ngọn lửa chiến tranh sang một bên, tại sao không đăng nhập vào nhật ký hệ thống thực? Nó dễ dàng hơn, được lưu trữ ở định dạng văn bản và thường được hỗ trợ bởi các phần mềm quản lý nhật ký (xem Graylog, nhật ký, Dấu vết giấy tờ).