2012-04-11 27 views
6

Có cách nào để chuyển tiếp thông tin thu thập rác (ví dụ đầu ra của -XX:+PrintGCDetails hoặc -verbose:gc) tới trình ghi nhật ký trong ứng dụng Java (sl4j + logback trong trường hợp của tôi) không?Ghi nhật ký thông tin GC trong ứng dụng

Trả lời

5

Những thông điệp được tạo ra bởi quá trình bản địa JVM và không phải từ mã Java, vì vậy bạn chỉ có thể

  1. Chuyển đầu ra để nộp sử dụng -Xloggc (không xoay)
  2. Giá đỡ ống thẳng trực tiếp (một số tùy chọn xoay)
3

Một cách tiếp cận thú vị sẽ được chuyển hướng gc.log để một ống tên -Xloggc:/my/named/pipe How to write GC log to named pipe

sau đó đọc ống hình thành nên bản thân ứng dụng : How to open a Windows named pipe from Java?

và đăng nhập vào một tùy ý (ví dụ: async lăn) logback logger từ mã.

Đã thử trên máy tính Windows. Thật không may, nó là phức tạp hơn để thiết lập trên Windows hơn trên Linux.

Trên Windows, nó hoạt động cơ bản với sự trợ giúp của Powershell script bổ sung (có thể là một ứng dụng chuyên dụng). sample project này cũng chứa một ứng dụng demo có thể được sử dụng ngay lập tức để kiểm tra chuyển hướng nhật ký GC tới Logback thông qua SLF4J.

Các vấn đề liên quan