2011-09-19 25 views
5

Tôi đang sử dụng log4j cho mục đích đăng nhập trong ứng dụng của mình. Kể từ bây giờ để định cấu hình quá trình ghi nhật ký tôi đang sử dụng mã sau:Log4j định cấu hình và xem không hoạt động đúng cách

LogManager.resetConfiguration(); 
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("log4j.properties"); 
Properties props= new Properties(); 
props.load(stream); 
PropertyConfigurator.configure(props); 

Nhưng bất cứ khi nào tôi muốn thay đổi mức ghi nhật ký trong quá trình, tôi phải khởi động lại máy chủ. Vì vậy, tôi đã thay đổi mã thành: -

LogManager.resetConfiguration(); 
PropertyConfigurator.configureAndWatch(("log4j.properties", 900000L); 

mã này lý tưởng sẽ giúp tải lại tệp log4j.properties sau thời gian được chỉ định, mà tôi đã đề cập là 15 phút. Nhưng mã vẫn không hoạt động

Tôi có thiếu gì trong mã không?

Trân trọng.

+1

Bạn đã tạo một ví dụ độc lập về điều này chưa và thử xem nó có hoạt động như bạn mong đợi không? Ngoài ra, bạn đã chuyển từ kỹ thuật tải lớp học sang kỹ thuật dựa trên hệ thống tập tin chưa? Trong trường hợp đó, hãy đảm bảo đường dẫn của bạn đến log4j.properties là chính xác. –

Trả lời

7

configureAndWatch() tệp đồng hồ. Không phải tài nguyên trong classpath.

+0

ya tôi đã thử với điều đó .. nó hoạt động đúng .. Cảm ơn –

1

Tôi đã thử giải pháp và hoạt động tốt! Vấn đề là bạn phải cung cấp đường dẫn như một tệp không giống như một tài nguyên.

//Resource 
DOMConfigurator.configureAndWatch("/log4j.xml", 2000L); 

//File 
DOMConfigurator.configureAndWatch("./src/log4j.xml", 2000L); 

Hãy thử tùy chọn thứ hai và sửa đổi các log4j.xml và thử nghiệm nó!

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