Nhật ký của systemd: làm thế nào để lọc theo tin nhắn?


8

Tạp chí trông giống như một công cụ tuyệt vời để xem qua nhật ký, nhưng tôi bị mắc kẹt với cảm giác giống như một câu hỏi đơn giản: Tôi muốn xem tất cả các tin nhắn cron có chứa cụm từ update-ipsets.

Tất nhiên tôi có thể làm điều này

journalctl -u cron.service | grep update-ipsets

nhưng sau đó bạn mất tất cả các lợi ích khác của đầu ra của tạp chí (mã màu, phân trang tự động, xem trực tiếp, v.v.)

Tôi đã thử:

journalctl -u cron.service MESSAGE=update-ipsets
journalctl -u cron.service "MESSAGE=*update-ipsets*"
journalctl -u cron.service "MESSAGE=.*update-ipsets.*"
journalctl -u cron.service "MESSAGE=/.*update-ipsets.*/"

Và bạn không muốn thử nghiệm bằng cách nhấn tabsau MESSAGE=- treo vỏ (zsh / Debian Jessie) và Ctrl-Ccũng không giúp được gì!

Tôi không thể tin rằng nó không có chức năng cơ bản này được tích hợp, vì vậy tôi có chắc là mình đã bỏ lỡ điều gì không?

Cảm ơn.

Câu trả lời:


3

Hiện tại, tạp chí không hỗ trợ các mẫu hoặc ký tự đại diện trong các trận đấu thực địa. greplà lựa chọn tốt nhất của bạn.

Tôi đã có cùng một vấn đề và tôi nghĩ rằng journalctlchỉ tìm kiếm một kết quả khớp chính xác cho GIÁ TRỊ khi NAME=VALUEđược thông qua dưới dạng đối số.

Điều tra của tôi:

  1. trang nam

    Từ journalctl(1)

    Mẫu không được đề cập trong phần mô tả các trận đấu:

     [...] A match is in the format "FIELD=VALUE", e.g.
     "_SYSTEMD_UNIT=httpd.service", referring to the components
     of a structured journal entry. [...]
    

    Trang man chỉ một mẫu khi chỉ mô tả -utùy chọn.

       -u, --unit=UNIT|PATTERN
           Show messages for the specified systemd unit UNIT 
           (such as a service unit), or for any of the units
           matched by PATTERN. 
    
  2. Mã nguồn

    Các chức năng fnmatchtrong src/journalđược sử dụng khi chỉ tìm kiếm các đơn vị .

  3. gỡ lỗi tạp chí

    Kích hoạt đầu ra gỡ lỗi, bạn có thể thấy rằng mẫu chỉ được mở rộng khi sử dụng -u.

    $ SYSTEMD_LOG_LEVEL=debug journalctl -n1 -u gdm*
    ...
    Matched gdm.service with pattern _SYSTEMD_UNIT=gdm*
    Matched gdm.service with pattern UNIT=gdm*
    Journal filter: ((OBJECT_SYSTEMD_UNIT=gdm.service AND _UID=0) OR (UNIT=gdm.service AND _PID=1) OR (COREDUMP_UNIT=gdm.service AND _UID=0 AND MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1) OR _SYSTEMD_UNIT=gdm.service)
    ...
    

    Tất cả các trận đấu được xử lý chính xác, bao gồm UNIT:

    $ SYSTEMD_LOG_LEVEL=debug journalctl -n1 UNIT=gdm.*
    ...
    Journal filter: UNIT=gdm*
    ...
    

1
Lưu ý rằng điều này thực sự được thực hiện trong bản phát hành systemd cuối cùng github.com/systemd/systemd/commit/
mẹo
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.