2010-10-19 5 views
8

Tôi đang sử dụng SLF4J và theo yêu cầu tôi phải lưu trữ nhật ký vào tệp .log. Nhưng khi tôi chạy chương trình đăng nhập không được ghi vào tập tin thelog.Lưu trữ nhật ký vào tệp .log sử dụng SLF4j/log4j

Class:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 


public class TestSLF4J { 

// private static Logger _logger = LoggerFactory.getLogger(TestSLF4J.class); 
    private static Logger _logger = LoggerFactory.getLogger(TestSLF4J.class); 



    public static void main(String[] args) { 
     logger .debug("Sample debug message"); 
logger .info("Sample info message"); 
logger .warn("Sample warn message"); 
logger .error("Sample error message"); 
    } 
} 

log4j.properties

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.maxFileSize=100KB 
log4j.appender.file.maxBackupIndex=5 
log4j.appender.file.File=C:/checkLog.log 
log4j.appender.file.threshold=DEBUG 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.rootLogger=DEBUG,file 

tôi có thể xem thông tin, cảnh báo, lỗi trên giao diện điều khiển nhưng không phải giá trị debug .. !!

Có ai có thể giúp tôi lưu trữ nhật ký vào tệp checkLog.log không ??

Trả lời

9

Tôi vừa thử ví dụ bạn đã cung cấp và nó hoạt động tốt cho tôi. Có một vài điều mà tôi muốn kiểm tra/thử:

  • Kiểm tra xem bạn có thể viết vào thư mục gốc của C: - viết này để thay thế:

    log4j.appender.file.File=checkLog.log 
    

    để đăng nhập vào thư mục hiện hành

  • Thêm một giao diện điều khiển logger để xem liệu nó hoạt động trong giao diện điều khiển:

    log4j.appender.console=org.apache.log4j.ConsoleAppender 
    log4j.appender.console.layout=org.apache.log4j.PatternLayout 
    log4j.appender.console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
    
    log4j.appender.file=org.apache.log4j.RollingFileAppender 
    log4j.appender.file.maxFileSize=100KB 
    log4j.appender.file.maxBackupIndex=5 
    log4j.appender.file.File=checkLog.log 
    log4j.appender.file.threshold=DEBUG 
    log4j.appender.file.layout=org.apache.log4j.PatternLayout 
    log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
    
    log4j.rootLogger=DEBUG,console,file 
    

    Khi bạn chạy applicati bật, bạn sẽ thấy đăng nhập trong bảng điều khiển và trong tệp.

  • Kiểm tra xem tất cả các thư viện sl4j đang trong con đường - bạn sẽ cần slf4j-apislf4j-log4j12 lọ trên classpath của bạn

  • Đảm bảo rằng log4j.properties là trên classpath

Hope this helps.

1

Đảm bảo rằng bạn chỉ ràng buộc với một khung đăng nhập. Nếu bạn có nhiều hơn một khung công tác ghi nhật ký thì bạn có thể NOT xem kết quả đầu ra.

Tôi đã gặp sự cố tương tự rồi thấy rằng, đường dẫn lớp có slf4j-simple-1.7.5.jar cũng như log4j.jar. Vì vậy, đăng xuất đầu ra đã được viết chỉ trên bàn điều khiển. Loại bỏ đầu tiên từ đường dẫn lớp đã giúp.

Also check console, you should be getting a warning/error message.