2011-12-12 33 views
6

Tôi đang tạo giải pháp cho nhật ký ứng dụng của mình, có nhiều loại ghi nhật ký (người dùng, ứng dụng, v.v ...), muốn lưu từng loại nhật ký vào một tệp riêng biệt.Nhiều tệp nhật ký với log4j

Điều này có thể với log4j hoặc một số API khác? Tôi có thể làm như thế nào?

Nếu bạn thấy thú vị, tôi chỉnh sửa câu hỏi và đặt mã, nhưng tôi không nghĩ nó đáng giá, chúng vẫn rất cơ bản.

Xin cảm ơn trước.

+0

những gì bạn có ý nghĩa với nhiều loại hình khai thác gỗ? Mức độ đăng nhập (DEBUG, INFO, WARN ...) HOẶC các lớp khác nhau trong đó mã đăng nhập xảy ra HOẶC bạn có muốn các tệp nhật ký khác nhau tùy thuộc vào người dùng chỉ chạy qua mã HOẶC bạn có muốn nó khác nhau theo chuỗi không Tên? –

+1

có thể trùng lặp của [tạo-nhiều-log-tệp-của-khác nhau-nội dung-với-log4j] (http://stackoverflow.com/questions/728295/creating-multiple-log-files-of-different-content- with-log4j) –

+0

@olly_uk Tôi nghĩ thats không phải là một bản sao. – caarlos0

Trả lời

22

Trong cource, sử dụng FileAppenders khác nhau Ví dụ từ internet:

log4j.rootLogger=DEBUG 

# AdminFileAppender - used to log messages in the admin.log file. 
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender 

log4j.appender.AdminFileAppender.File=admin.log 

log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

# ReportFileAppender - used to log messages in the report.log file. 
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender 

log4j.appender.ReportFileAppender.File=report.log 

log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

log4j.logger.com.vaannila.admin=WARN,AdminFileAppender 
log4j.logger.com.vaannila.report=DEBUG,ReportFileAppender 

Bây giờ bạn có thể đăng nhập để admin.log Logger.getLogger("com.vaannila.admin").log("To admin log") và báo cáo đăng nhập Logger.getLogger("com.vaannila.report").log("To report log")

+0

Tôi không hiểu phần "Logger.getLogger (" com.vaannila.admin "). Log (" Để đăng nhập quản trị ")", làm thế nào log4j sẽ biết rằng tôi muốn đăng nhập AdminFileAppender, trong ví dụ đó? Tôi cố gắng làm điều tương tự ở đây, nhưng nó không hoạt động ... – caarlos0

+1

log4j.logger.'com.vaannila.admin' = WARN, AdminFileAppender thuộc tính này nói rằng nếu bạn đăng nhập vào 'com.vaannila.admin' hoặc 'com.vaannila.admin.xxx.yyy.zzz' sau đó sử dụng AdminFileAppender (đó là FileAppender với tệp 'admin.log') – korifey

+0

hmm, bây giờ nó hoạt động. Cảm ơn rất nhiều, @korifey, Thiên Chúa chúc lành cho bạn. – caarlos0

2

Log4j cung cấp cho Logger và Appenders. Cách để làm điều này là có một Appender cho mỗi tập tin mà bạn muốn. Họ đã thiết lập một bộ Logger phù hợp để trỏ đến (các) Appender thích hợp. Logger thường được thiết lập bằng cách sử dụng tên gói. Nếu điều này sẽ làm việc cho bạn, mã trong gói x đi vào tập tin y, chỉ cần làm điều đó. Nếu không, hãy tạo Logger trên mỗi tệp đầu ra và có mã chọn trình ghi nhật ký thích hợp. Bạn cũng có thể có Logger và gửi thông tin cho nhiều Appender, vì vậy bạn có thể thiết lập các tùy chọn này khi thích hợp.

Xem bài đăng của korifey để biết ví dụ về cách thiết lập tính năng này.

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