2012-01-31 39 views
5

Tôi cần đăng nhập thông báo gỡ lỗi từ cùng một lớp vào các tệp khác nhau.
Ý tôi là từ cùng một lớp, tôi cần một tuyên bố gỡ lỗi cụ thể để truy cập fileA trong khi một tuyên bố gỡ lỗi cụ thể khác để truy cập fileB.java log4j chọn tệp nào cần đăng nhập vào

Trong trường hợp không rõ, những gì tôi đang cố gắng làm là ghi nhật ký các tin nhắn mạng vào một tệp hoàn toàn riêng biệt so với các thông điệp đăng nhập khác mà lớp này xuất ra.

Nếu tôi làm

<logger name="com.test.modules" additivity="false" > 
    <priority value="debug"/> 
    <appender-ref ref="netWorkCommunication"/> 
    <appender-ref ref="generalDebug"/> 
    </logger> 

Sau đó, khai thác gỗ từ lớp học của tôi sẽ đi đến tất cả các file (vì nó là từ cùng một gói).

Làm cách nào tôi có thể định cấu hình log4j để tôi có thể chọn tuyên bố ghi nhật ký từ các lớp học dưới com.test.modules truy cập ứng dụng nào có tệp?

Trả lời

6

Sử dụng một Logger riêng cho từng tập tin:

private static Logger log = Logger.getLogger(YourClass.class); 
private static Logger networkLog = Logger.getLogger("network." + YourClass.class.getName()); 
private static Logger httpLog = Logger.getLogger("http." + YourClass.class.getName()); 

và xác định appender cho mỗi Logger như bình thường.

2

Đây thực sự là một kịch bản mà nhiều nhật ký sẽ được sử dụng. Cấu hình một logger riêng biệt cho mạng và chỉ định một appender khác cho nó.

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