2012-01-05 21 views
14

Tôi đã ở dưới mã trong Java 1.6:Làm thế nào slf4j hoạt động? Không ghi nhận được tạo ra

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

private static Logger log = LoggerFactory.getLogger(myfile.class); 

Bây giờ, tôi đặt slf4j-api-1.6.4.jar & slf4j-đơn giản-1.6.4.jar trong classpath & đang biên dịch tốt nhưng nó là nơi đăng nhập tất cả các thông tin ????

Tôi đã đăng nhập.info ("test"); nhưng không tạo bất kỳ tệp nhật ký nào. Tôi đã thử tạo log4j.properties với nội dung bên dưới:

log4j.appender.stdout=org.apache.log4j.RollingFileAppender 
log4j.appender.stdout.File=/var/abc.log 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}]%6p %c{1}:%L - %m%n 
log4j.appender.stdout.MaxFileSize=50000KB 
log4j.appender.stdout.MaxBackupIndex=200 

log4j.rootLogger=info, stdout 

Nhưng không hoạt động, tôi biết tệp ở trên là bắt buộc đối với log4j nhưng slf4j hoạt động như thế nào ?? Tôi có cần tạo bất kỳ tệp thuộc tính nào tương tự như log4j không ?? Nếu vậy, tôi cần phải đặt nó ở đâu?

Cảm ơn!

+1

SLF4J chỉ là giao diện ghi nhật ký. Bạn cần triển khai ghi nhật ký trên đường dẫn lớp. Bạn có cái nào không? –

+0

bạn nhập slf4j-simple-1.6.4.jar, nhưng bạn đang sử dụng log4j làm trình ghi nhật ký của mình, đó là vấn đề. –

Trả lời

34

SLF4J chỉ là mặt tiền cho phép bạn chuyển đổi các khung đăng nhập khác nhau một cách dễ dàng .Tất cả các cuộc gọi ghi nhật ký bằng API SLF4J sẽ được ủy nhiệm cho khung đăng nhập cơ bản.

Bạn không phải tạo bất kỳ tệp thuộc tính nào cho SLF4J. Tất cả những gì bạn cần làm là sử dụng đúng "liên kết SLF4J" phù hợp với khung đăng nhập của bạn để ủy quyền tất cả các cuộc gọi ghi nhật ký API SLF4J tới khung khai thác cơ bản. Bức tranh sau đây cho thấy mối quan hệ giữa SLF4J, "SLF4J bindings", và khai thác gỗ nằm bên dưới khuôn khổ

enter image description here

slf4j-simple-1.6.4.jar đại biểu tất cả các sự kiện để System.err, nhưng không đại biểu log4j API.So, bạn nên sử dụng slf4j-log4j12-1.6.4.jar thay thế.

Để tóm tắt, bạn nên sử dụng các lọ sau:

  • slf4j-api-1.6.4.jar
  • slf4j-log4j12-1.6.4.jar
  • log4j-1.2.16. jar

Reference

1

SLF4J chỉ là trừu tượng khai thác - nó không tự viết bất kỳ nhật ký nào. Sử dụng Logback - nó thực hiện SLF4J nguyên bản và được viết bởi cùng một người đã viết SLF4J và log4j. SLF4J và Logback là một khung công tác tuyệt vời - chúng tôi thích cách SLF4J cầu các khung công tác khác (JUL, Commons Logging, log4j) vào khung công tác lựa chọn của chúng tôi (đó là Logback).

+0

Tôi có thể sử dụng log4j cùng với slf4j này không? – Mike

+0

Có, nếu bạn thích, bạn có thể sử dụng SLF4J để đăng nhập vào log4j.Đó là vẻ đẹp của SLF4J - đăng nhập vào giao diện của nó và thay đổi việc thực hiện bất cứ khi nào bạn muốn. Bạn sẽ cần phải thêm tệp slf4j-log4j.jar (hoặc một cái gì đó như thế, tôi đang viết nó từ bộ nhớ) vào đường dẫn lớp, và tất nhiên bạn sẽ cần một tệp thuộc tính log4j. Logback rất giống với log4j - như tôi đã nói họ là cùng một anh chàng. Logback tránh một số thiếu sót của log4j ... ông đã học được từ việc tạo log4j :) – Paul

0

tôi đã sử dụng slf4j-api (jar). Tôi đã thay thế lõi logback phụ thuộc (jar) bằng logback-classic sau đó nó bắt đầu đăng nhập.

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