2009-06-02 38 views
6

Ứng dụng web của tôi đang sử dụng Java, thực thi JPA Hibernate (EntityManager) và Spring. Lựa chọn logger của tôi là gì và bạn sẽ giới thiệu gì. Lý tưởng nhất là cấu hình sẽ đơn giản (một tập tin cấu hình cho Hibernate, Spring và mã của tôi).Trình ghi nhật ký được đề xuất để sử dụng với Java, Hibernate và Spring

+0

Duplicate của http://stackoverflow.com/questions/354837/whats-up-with-logging-in-java – Jherico

+0

lẽ ... Đây Q là cụ thể về Hibernate và Spring –

+0

Than ôi, chỉ có một câu trả lời đề cập đến bất cứ điều gì về việc sử dụng đăng nhập vào một phương thức có liên quan cụ thể đến Spring và Hibernate. Ở mức nào, câu trả lời thực sự là 'bất kỳ triển khai ghi nhật ký nào cũng sẽ làm những gì bạn muốn vì hầu hết các thư viện như spring hoặc hibernate đang ghi nhật ký triển khai thực hiện bất khả tri'. – Jherico

Trả lời

13

Khi xây dựng các ứng dụng ra khỏi các khung công tác khác nhau, bạn thường cần bọc các logger hiện tại, chúng có thể là log4j hoặc JUL hoặc JULI hay bất kỳ thứ gì. Ứng dụng tiêu chuẩn cho điều này là Simple Logging Facade for Java (SLF4J). Ngay cả khi ứng dụng của bạn không cần SLF4J thì bây giờ bạn có thể muốn thêm một thư viện mà không cần nó, và đó là hy vọng tốt nhất của bạn cho một tập tin cấu hình trong thời gian dài.

Với ý nghĩ đó, bạn nên gắn bó với các gói ghi nhật ký mà SLF4J hỗ trợ, nhưng thường nó nén xuống java.util.logging (JUL) hoặc log4j của Apache. Đây là subject for debate trong một thời gian và bạn có thể tìm thấy nhiều ý kiến ​​ở cả hai bên.

Cá nhân, tôi nghĩ rằng thật không may là việc ghi nhật ký Java nằm trong this situation và tôi sẽ sử dụng bất kỳ thứ gì mang lại cho tôi ít đau nhất cho tình huống.

7

log4j là bộ ghi chuẩn mà tôi sử dụng. Bạn có thể cấu hình các mức ghi nhật ký và các tệp nhật ký theo gói để Hibernate, Spring và mã của bạn có thể đi tới các tệp nhật ký của riêng bạn.

3

tôi sử dụng Apache Commons Logging api, với một tập tin log4j cấu hình (file log4j cấu hình rất đơn giản, dễ dàng cho một người mới để hiểu và có nhiều ví dụ để làm việc từ.

tôi thích sử dụng commons đăng nhập API vì nó Một cấu hình log4j đơn giản sẽ in ra thông tin gỡ lỗi cho gói của bạn, mức INFO cho mùa xuân và ngủ đông, và WARN cho mọi thứ khác:

# Global logging configuration 
log4j.rootLogger=WARN, stdout 
log4j.category.org.mydomain.org=DEBUG 
log4j.category.org.hibernate=INFO 
log4j.category.org.springframework=INFO 


# CONSOLE appender not used by default 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %c - %m%n 
5

Không ai từng bị sa thải vì đã chọn log4j.

Ngoài ra, hãy xem slf4j.

4

Hibernate đã dựa trên SLF4J. Trừ khi tôi nhầm, phiên bản Spring hiện tại dựa vào việc ghi nhật ký, nhưng phiên bản tiếp theo cũng sẽ sử dụng SLF4J. Dù sao, bạn có thể consolidate all logging through SLF4J (xem phần trên jcl-over-slf4j.jar). Khi đã xong, bạn có thể chọn bất kỳ java.util.logging, log4j hoặc logback nào làm khung khai thác cơ bản của bạn.

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