2011-04-15 9 views
28

Tôi đang cố gắng sử dụng slf4j + java.util.logging. Tôi biết cách thiết lập mã nguồn Java để thực hiện điều này thông qua logger = LoggerFactory.getLogger(...)logger.warn('...') hoặc bất kỳ điều gì.slf4j + java.util.logging: cách định cấu hình?

Nhưng tài liệu để thiết lập cấu hình trong slf4j ở đâu? Tôi rất bối rối ... Tôi có sổ tay log4j và quen thuộc với kiến ​​thức cơ bản về các bộ điều hợp ghi nhật ký, nhưng tôi không biết cách làm thế nào để làm việc với slf4j + java.util.logging.

cụ thể là:

  • mà .properties tập tin và/hoặc JVM -D đối số dòng lệnh làm tôi cần phải xác định đến thời điểm nó ở tập tin cấu hình của tôi?

  • tài liệu dành cho tệp cấu hình cho java.util.logging ở đâu?

  • sử dụng slf4j có gây ra bất kỳ thay đổi nào trong tệp cấu hình của tôi không? (tức là điều tôi sẽ phải khai báo khác, so với chỉ sử dụng java.util.logging hoặc log4j trực tiếp)

+1

bạn Không tìm thấy những người trong trang web tài liệu SL4J? http://www.slf4j.org/docs.html –

+5

không, nó rất ngắn gọn. –

+0

Tôi không nhận được những gì bạn muốn đạt được, bạn có muốn sử dụng logger của slf4j trong mã và java.logging để xuất nhật ký hay cách khác không? – moritz

Trả lời

13

Xem this tutorial on jul:

java -Djava.util.logging.config.file = myLoggingConfigFilePath

Nhưng tôi muốn giới thiệu để đi cho Logback

+2

Có một lợi thế khác biệt của việc sử dụng j.u.l, cụ thể là nó rất dễ sử dụng trên các trình nạp lớp. Chúng tôi sử dụng nó để truyền các thông điệp tường trình ra khỏi một ứng dụng web (WAR) vào các thùng chứa thùng chứa servlet. –

11

Không có cấu hình nào trong lớp slf4j. Nó chỉ là một API, mà backend phải cung cấp việc thực hiện (nhiều hơn hoặc ít hơn).

Để sử dụng java.util.logging làm phụ trợ slf4j, bạn phải có slf4j-jdk14-mumle.jar từ bản phân phối slf4j trên đường dẫn lớp của bạn và thực hiện phép thuật được liệt kê trong javadoc để bật nó. Nếu không, bạn sẽ có một lỗi thời gian chạy nói rằng không có triển khai thực hiện slf4j.

+0

"trang web slf4j hiện đang ngừng hoạt động để tôi không thể kiểm tra trang thủ công hoặc Câu hỏi thường gặp)" - chính xác. Tôi có slf4j-api - * jar và slf4j-jdk14 - * jar trong classpath của tôi, tôi chỉ không biết làm thế nào để "làm phép thuật được liệt kê trong javadoc" để làm cho nó chuyển hướng đến một tập tin thay vì stdout. –

+1

Nếu bạn nhận được thông báo tường trình cho bảng điều khiển của mình, điều đó có nghĩa là hệ thống ghi nhật ký hoạt động chính xác. Sau đó bạn cần phải cấu hình nó _COMPLETELY NHƯ BẠN MUỐN OTHERWISE_ để có bất cứ điều gì làm việc khác nhau. I E. cho việc ghi nhật ký jdk, bạn cần phải làm chính xác cùng một công việc với các thuộc tính và đối với log4j, bạn cần phải cung cấp một tệp log4j.xml cho nó biết phải làm gì. –

+0

OK, sau đó tôi đoán câu hỏi của tôi sẽ trở thành nơi các tài liệu về cấu hình ghi nhật ký jdk14. –

2

Bạn không định cấu hình SLF4J - bạn cần phải liên kết và định cấu hình nhà cung cấp. Tôi sử dụng Logback, được xây dựng đặc biệt cho SLF4J. Bạn cũng có thể sử dụng log4j. Xem mục nhập có liên quan trong hướng dẫn sử dụng: http://www.slf4j.org/manual.html#binding

+4

... và tất nhiên, để thực sự _answer câu hỏi ban đầu_ (tại sao tất cả mọi người đều bỏ phiếu không trả lời?): tất nhiên, người ta có thể sử dụng 'java.util.logging' để thực hiện ghi nhật ký bằng cách đặt' slf4j-jdk14- {slf4j-version} .jar' vào classpath thay vì bất kỳ phần tử nào khác 'slf4j- {binding} .jar'; sau đó đặt j.u.l. cấu hình bằng cách sử dụng thuộc tính '-Djava.util.logging.config.file'. (Tôi _would_ downvote, nhưng sẽ không vì tôi cũng thích logback :-). Nhưng tôi cũng thích _answers_.) – michael

3

Tôi đã bỏ ghi nhật ký Java vào cùng một mục đích và truy cập logback. Không có gì để làm để cấu hình logback với SLF4J thực sự. Chỉ cần đặt logback.xml vào thư mục gốc của jar với cấu hình logback và đặt logback-XX.jar trên classpath.

<configuration> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="warn"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

Đây là cấu hình để ghi vào bàn điều khiển, nhưng hướng dẫn đăng nhập có nhiều ví dụ hơn.

+3

Mặc dù tôi đồng ý, điều này không trả lời câu hỏi. Để đảm bảo các phiếu bầu, bao gồm một cái gì đó như: tương tự như logback bằng cách sử dụng 'java -Dlogback.configurationFile =/path/to/config.xml', j.u.l. có thể sử dụng: 'java -Djava.util.logging.config.file = myLoggingConfig' w/hoặc [tệp thuộc tính] (http://stackoverflow.com/questions/805701/load-java-util-logging-config-file -cho-default-initialization) hoặc [class] (http://docs.oracle.com/javase/1.4.2/docs/api/java/util/logging/LogManager.html). Logback theo mặc định sử dụng 'logback.xml' từ classpath; j.u.l sử dụng 'logging.properties' từ thư mục cài đặt Java của bạn. – michael

-2

Đôi khi nó xuất hiện bạn có thể nhận với việc chỉnh sửa tệp của bạn như thế này

tomcat-directory/webapps/your_app_name/WEB-INF/classes/log4j.properties

(tiêu chuẩn tập tin log4j config)

+0

Bạn có chỉ định đường dẫn để sử dụng không? Nếu vậy, bạn có thể làm rõ lý do tại sao nó hoạt động và trong đó phiên bản của tomcat? – Andreas

+0

@Andreas bất cứ nơi nào thư mục webapps của bạn hoạt động. Điều này đã được với tomcat 6 Tôi tin rằng nhưng tôi nghĩ rằng nó không quan trọng, vì nó là nhiều hơn một điều log4j. Chúc mừng! – rogerdpack

+0

downvoters xin vui lòng để lại một lý do, cảm ơn! – rogerdpack

2

Về cơ bản, bạn chỉ cần có slf4j-api.1.7.7.jar và slf4j-jdk14.1.7.7.jar trên classpath của bạn. Và sau đó tạo tệp logging.properties cho ứng dụng của bạn và đặt thuộc tính Hệ thống -Djava.util.logging.config.file = {path_to_logging.thuộc tính}

séc this tutorial ra mang đến cho bạn những ví dụ làm thế nào để cấu hình slf4j với khung đăng nhập khác nhau như logger java, log4j, logback, vv