2012-01-20 24 views
18

Dưới đây là thông báo lỗi -Hãy khởi tạo hệ thống log4j đúng cảnh báo

log4j:WARN No appenders could be found for logger (SerialPortUtil). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Đây là gọi trong lớp SerialPortUtil -

private static final Logger log = Logger.getLogger(SerialPortUtil.class.getSimpleName()); 
. 
. 
. 
log.info("Serial port " + port.getName() + " is available"); 

Dưới đây là nội dung của tập tin log4j.properties của tôi -

log4j.rootLogger=DebugAppender 

#Debug logging 
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender 
log4j.appender.DebugAppender.Threshold=DEBUG 
log4j.appender.DebugAppender.File=activityLog.log 
log4j.appender.DebugAppender.MaxFileSize=200KB 
log4j.appender.DebugAppender.MaxBackupIndex=5 
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.DebugAppender.layout.ConversionPattern=%d{DATE} %t - %m%n 

Và tệp thuộc tính nằm trên đường dẫn lớp.

Mọi thứ đều phù hợp với tôi, vậy điều gì đang xảy ra? Không nên ngưỡng DEBUG cũng chụp INFO ghi nhật ký?

+0

bạn có cố chạy với -Dlog4.debug = true không? Điều này có thể cung cấp nhiều thông tin hơn. – oers

+0

@oers, No..Tôi không có. – mre

+1

có thể trùng lặp của [Cách khởi tạo log4j đúng cách?] (Http://stackoverflow.com/questions/1140358/how-to-initialize-log4j-properly) –

Trả lời

5

Được rồi, vì vậy tôi đã nhận nó làm việc bằng cách thay đổi này

log4j.rootLogger=DebugAppender 

này

log4j.rootLogger=DEBUG, DebugAppender 

Rõ ràng bạn cần phải xác định mức độ khai thác gỗ cho rootLogger đầu tiên? Tôi xin lỗi nếu tôi lãng phí thời gian của bất cứ ai.

Ngoài ra, tôi quyết định trả lời câu hỏi của riêng mình vì đây không phải là vấn đề về classpath.

8

Từ liên kết trong thông báo lỗi:

này xảy ra khi mặc định file cấu hình log4j.properties và log4j.xml không thể được tìm thấy và các ứng dụng thực hiện không cần cấu hình rõ ràng. log4j sử dụng Thread.getContextClassLoader(). getResource() để định vị các tệp cấu hình mặc định và không trực tiếp kiểm tra hệ thống tệp. Biết được vị trí thích hợp để đặt log4j.properties hoặc log4j.xml yêu cầu hiểu chiến lược tìm kiếm của trình nạp lớp đang sử dụng. log4j không cung cấp cấu hình mặc định vì đầu ra cho bàn điều khiển hoặc hệ thống tệp có thể bị cấm trong một số môi trường. Xem thêm FAQ: Tại sao không thể log4j tìm thuộc tính của tôi trong ứng dụng J2EE hoặc WAR ?.

Không thể tìm thấy tệp cấu hình. Bạn đang sử dụng xml hoặc một tập tin thuộc tính ??

Ngoài ra, hãy sử dụng logback!

+0

Như đã đề cập trong câu hỏi, tôi đang sử dụng tệp thuộc tính. Và như đã đề cập trong câu hỏi của tôi, tệp thuộc tính là trên classpath, vì vậy cái gì cho? – mre

+0

đúng. Lưu ý rằng cấu hình xml cung cấp FILTERS ngoài ra có thể hữu ích một số lần. Vui mừng khi bạn làm cho nó hoạt động. – Gevorg

1

Hãy thử làm một cái gì đó như sau trong chính:

public static void main(String[] args) { 
    PropertyConfigurator.configure(args[0]); 
    //... your code 

bạn cần phải nói cho log4j những gì cấu hình của nó nên được.

0

Điều gì làm việc cho tôi là tạo một tệp thuộc tính log4j (bạn có thể tìm thấy nhiều ví dụ trên mạng) và đặt nó vào thư mục thuộc tính trong thư mục dự án của bạn (tạo thư mục này nếu không có exicts). Nhấp chuột phải vào thư mục và Build Path->Use as Source Folder.

Hy vọng điều đó sẽ hữu ích!

2

Nếu bạn gặp phải lỗi/cảnh báo khi bạn đang chạy chương trình sử dụng log4j, giải pháp là thêm một log4j.properties mà trình tải lớp có thể nhìn thấy.Thông thường đó là trong "src" thư mục của dự án Java của bạn: Thêm các nội dung sau vào file

log4j.rootLogger=INFO, stdout 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
1

Thêm mã

BasicConfigurator.configure(); 

trong lớp học chính tĩnh của bạn như sau ..

Lưu ý: thêm "\ hadoop-2.7.1 \ share \ hadoop \ common \ lib \ commons-logging-1.1.3.jar & \ hadoop-2.7.1 \ share \ hadoop \ common \ lib \ log4j- 1.2.17.jar " như tài liệu tham khảo bên ngoài

import org.apache.log4j.BasicConfigurator; 

public class ViewCountDriver extends Configured implements Tool{ 

    public static void main(String[]args) throws Exception{ 

     BasicConfigurator.configure(); 

     int exitcode = ToolRunner.run(new ViewCountDriver(), args); 
     System.exit(exitcode); 
    } 
} 
2

Việc sửa chữa đối với tôi là đặt "log4j.properties" vào thư mục "src". Nó đã không làm việc trong thư mục gói của tôi nó phải là một trong những ở gốc rễ của nguồn. Thêm nó vào đường dẫn xây dựng mà sau đó di chuyển nó đến "Thư viện tham khảo" cũng không hoạt động.

Để lặp lại: hãy đặt log4j.properties vào thư mục gốc của thư mục src.

tệp log4j.properties của tôi có nội dung sau hoạt động trên phiên bản mới nhất của Spring Tool Suite dựa trên Eclipse.

# Configure logging for testing: optionally with log file 
#log4j.rootLogger=INFO, stdout 
log4j.rootLogger=WARN, stdout, logfile 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 

log4j.appender.logfile=org.apache.log4j.FileAppender 
log4j.appender.logfile.File=target/spring.log 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m% 
1

Để thêm vào @Gevorg, nếu bạn có tình huống tương tự chạy Spark cục bộ, hãy đặt tệp log4j.properties vào thư mục có tên tài nguyên trong thư mục chính.

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