2013-08-08 37 views
5

Tôi có thể cấu hình log4j để rollover mỗi giờ, sau đó nén tất cả các tệp nhật ký hàng ngày thành một zip (để zip chứa 24 tệp nhật ký).log4j. Rollover mỗi giờ, zip hàng ngày

Lý tưởng nhất là tôi chỉ muốn nén tệp cho những ngày từ một tuần trở lên. Nhưng đó là một phần khác của câu hỏi.

Trả lời

8

Bạn có thể muốn sử dụng DailyRollingFileAppender. Để cuộn chúng hàng giờ, ví dụ: bạn sẽ sử dụng DatePattern của '.'yyyy-MM-dd-HH. Đối với một tập tin log4j.properties:

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH 
... 

Hoặc cho cấu hình chương trình của bạn:

DailyRollingFileAppender appender = new DailyRollingFileAppender(); 
appender.setDatePattern("'.'yyyy-MM-dd-HH"); 

Logger root = Logger.getRootLogger(); 
root.addAppender(appender); 

Thật không may, sử dụng một DailyRollingFileAppender có nghĩa là bạn không thể giới hạn kích thước tập tin - điều này có thể có vấn đề nếu bạn có tấn nhật ký trong khoảng thời gian đã cho.

Để nén hãy xem để: compress-log4j-files

+1

tốt, làm bạn có nghĩa là kết hợp DailyRollingFileAppender với TimeBasedRollingPolicy (value = "logs/appname% d {yyyy-MM-dd} .zip."), Nó sẽ được có thể nhận tất cả 24 tệp đó hàng ngày và đóng gói thành một kho lưu trữ zip? – Alec

+0

xin lỗi idk, bạn phải thử nó – Khinsu