Tôi đã làm hết sức mình để thiết lập nhật thực và Ứng dụng Java của tôi để sử dụng tệp log4j.properties. Tuy nhiên, nó dường như không được sử dụng các tập tin thuộc tính và tôi không chắc chắn lý do tại sao.Ứng dụng Java: Bắt Log4j hoạt động trong môi trường Eclipse
Libraries: slf4j-api-1.6.1, slf4j-jdk14-1.6.1
Trong ứng dụng khai thác gỗ hoạt động tốt. Tôi có thể in thông tin, cảnh báo và lỗi vào bảng điều khiển eclipse.
Điều tôi muốn làm là thay đổi mức nhật ký thành gỡ lỗi và in tất cả các thông điệp ghi nhật ký cho cả bảng điều khiển và tệp nhật ký.
Tôi đã tạo ra một file log4j.properties trông như thế này:
log4j.rootLogger=DEBUG,console,file
log4j.rootCategory=DEBUG, R, O
# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender
# File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=5
log4j.appender.file.File=checkLog.log
log4j.appender.file.threshold=DEBUG
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
Cấu trúc thư mục của tôi trông như thế này:
My Project
--src/
----MYProject/
------*.java
--bin/
----MYProject/
------*.class
--log4j/
----log4j.properties
Trong nhật thực tôi đến: Run Configurations -> Classpath (tab) -> Nhấp chuột phải vào "Mục nhập của người dùng" -> Đã thêm "log4j" làm thư mục mới "và được lưu.
Sau đó, trong mã của tôi, tôi gọi trình ghi nhật ký như thế này (sa đang mple để chứng minh cách tiếp cận của tôi vì vậy nó có thể có lỗi cú pháp):
package MYProject;
import org.slf4j.LoggerFactory;
public class MyClass{
final org.slf4j.Logger test_logger = LoggerFactory.getLogger(MyClass.class);
public MyClass(){}
public someMethod(){
test_logger.debug("Some Debug");
test_logger.info("Some Info");
test_logger.warn("Some Warning");
test_logger.error("An Error");
}
}
sau đó tôi gọi someMethod và nó in INFO, WARN, KHÔNG CÓ LỖI đến nhật thực console. Nó sẽ không in DEBUG và sẽ không in ra tệp.
Tôi đánh giá cao mọi đề xuất về những gì tôi có thể đang làm sai.
Tôi đã chơi xung quanh với cả nhận xét và lời xin lỗi của bạn và đây là những gì tôi đã tìm ra. Tôi không thể thêm PropertyConfigurator với thiết lập hiện tại của mình vì nó là thuộc tính của thư viện log4j và không phải là một phần của thư viện slf4j-jdk14 (thư viện log4j của tôi khi tôi hiểu nó). Việc đặt các tham số VM thành true không trả về bất kỳ lỗi gỡ lỗi bổ sung nào. – Bryce
Nếu tôi sau đó tham khảo thư viện log4j thực tế ngoài slf4j-jdk14 tôi bắt đầu nhận được kết quả gỡ lỗi. Chỉ cần thêm tham chiếu làm cho tệp log4j.properties của tôi bắt đầu hoạt động. Điều này dường như giúp tôi có được khoảng 90% những gì tôi cần. Điều này làm tăng việc gỡ rối nhưng các lệnh tôi in ra trong lớp đã cho trong bài viết ban đầu không còn in (test_logger.debug, test_logger.info, v.v.). Tôi nghĩ rằng điều này là do thư viện log4j tôi thêm vào là ghi đè org.slf4j.Logger mà tôi đã sử dụng trước đó. Tôi là một chút bối rối về cách để có được hai thư viện để làm việc tốt hơn với nhau, bất cứ đề nghị? – Bryce
slf4j chỉ là một mặt tiền để ghi nhật ký, bạn vẫn phải thêm thư viện ghi nhật ký thực tế (log4j trong trường hợp của bạn) vào đường dẫn lớp của bạn. Xem liên kết này: http://slf4j.org/manual.html#binding –