Theo dõi liên tục các bản ghi với đuôi thỉnh thoảng được xoay


21

Chúng tôi đang sử dụng đuôi để theo dõi liên tục một số nhật ký, nhưng khi một bản ghi được xoay, phần đuôi của tệp đó sẽ chấm dứt.

Theo tôi hiểu, vấn đề là khi nhật ký được xoay, có một tệp mới được tạo và quá trình đuôi đang chạy không biết gì về xử lý tệp mới đó.

Câu trả lời:


34

Ah, có một lá cờ cho điều này.

thay vì sử dụng tail -f /var/log/filechúng ta nên sử dụngtail -F /var/log/file


tail -Fdịch sang tail --follow=name --retrynhư trong;

  • --follow=name: theo tên của tệp thay vì mô tả tệp
  • --retry: nếu tệp không thể truy cập được, hãy thử lại sau thay vì chết

Tại sao họ thậm chí có tùy chọn "-f"? Điều này nên được mặc định!
Đaminh Cerisano

27
# tail --follow=mylog.log

Từ người đàn ông đuôi :

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

Vì vậy, trong trường hợp này sử dụng -Ftùy chọn sẽ là chính xác.

-F     same as --follow=name --retry

11

Câu trả lời chính xác phụ thuộc vào hệ điều hành của bạn - nhưng trong nhiều trường hợp, tail -Fsẽ làm đúng.


3
Nếu đuôi -F không hoạt động, hãy biên dịch phiên bản đuôi -F. Sự thay thế khác là một con đường ngắn đến thị trấn điên.
chris


2

IMHO, thật kỳ quặc khi thay đổi tệp nhật ký của bạn theo SIZE thay vì theo ngày. Hầu hết các nhật ký hệ thống (trong unix hoặc linux) xoay vòng hàng tuần hoặc hàng tháng và không dựa trên kích thước ... Đây là điều tôi thích vì nhiều lý do, và cũng là điều mà nếu được thực hiện sẽ giải quyết vấn đề của bạn.

Tám năm sau, tôi không biết tôi đang nói cái quái gì ở đây: có rất nhiều nơi bạn muốn xoay theo kích cỡ, bởi vì luân chuyển hàng ngày / hàng tuần / hàng tháng có thể gây ra các tệp MASSIVE có thể gây ra các vấn đề nghiêm trọng.

Từ góc độ có nhiều kinh nghiệm hơn, câu hỏi thực sự là tại sao bạn muốn ngồi và liên tục theo dõi một tệp phát triển nhanh đến mức bạn xoay nó nhiều hơn hàng ngày ... Nó giống như xem luồng Ma trận.

Ngày nay, bạn nên xem xét một số tập hợp nhật ký dữ liệu lớn như Splunk hoặc Sumologic, nơi nó có thể lọc các sự kiện nhật ký thành các lớp và kích hoạt dựa trên các giá trị nhật ký cụ thể ... Không cần phải xem nhật ký trực tiếp.


Tôi đồng ý và đây là một điều tôi nhận ra tôi nên xem xét. Hy vọng log4j hỗ trợ nó. Cảm ơn!
DivideByHero

1
Một lợi thế rõ ràng của việc xoay theo kích thước là bạn có thể chắc chắn rằng toàn bộ bộ nhật ký sẽ nhỏ hơn một số kích thước đã biết.
Jim Zajkowski

1

Tôi sử dụng lệnh trên máy chủ sản xuất của mình:

tail --follow var/log/apache-access_log --retry

-1

Ngoài ra, nó có thể là một nhiệm vụ quá nặng nề cho mục đích của bạn, nhưng splunk có một tính năng đuôi để làm chính xác những gì bạn muốn. Nó miễn phí lên tới 500 MB / ngày, nhưng nếu dữ liệu của bạn vượt quá kích thước đó thì sẽ không đáng giá.

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.