2011-12-13 40 views
8

thể ai xin vui lòng cho tôi biết mối quan hệ giữa log4j và apache.commons.logging là gì? cái nào phổ biến hơn và tốt hơn?mối quan hệ giữa log4j và apache.commons.logging

tôi đã nhập khẩu một ứng dụng hiện có, trong đó họ đã nhập khẩu import org.apache.commons.logging.LogFactory; và viết một lớp riêng biệt gọi là Log và ghi đè một số phương pháp như critical, warn, info

Ví dụ

public static void info(String caller, String toWrite) 
    { 
     write(caller,toWrite,Log.INFO); 
    } 

Có thể ai xin vui lòng cho tôi biết là log4j và apache.commons.logging là khác nhau ??

Trả lời

11

Apache Commons Logging là một trừu tượng cho việc triển khai cụ thể. Nó sử dụng log4j, nếu có và cấu hình. Tôi sẽ sử dụng Commons đăng nhập vào mã của tôi và log4j như đăng nhập thực hiện.

+0

Tôi sẽ sử dụng Commons đăng nhập mã và log4j của tôi như là thực hiện khai thác gỗ, thì tại sao phải sử dụng Apache Commons Logging ?? – Pawan

+0

Bạn có thể sử dụng triển khai khác hoặc không có lúc chạy, vì vậy chương trình của bạn linh hoạt hơn. –

+0

Cảm ơn bạn rất nhiều. – Pawan

2

log4j là một khung đăng nhập, tức là nó cung cấp mã để đăng nhập tin nhắn. Commons-logging là một lớp trừu tượng cho các khung đăng nhập, nó không tự ghi lại bất cứ thứ gì. Ví dụ, nếu tôi viết mã bằng cách sử dụng commons logging và triển khai nó trên JBoss, việc ghi nhật ký được thực hiện bởi log4j, nhưng nếu tôi triển khai nó trên WebSphere logging thì được thực hiện bằng cách thực hiện ghi nhật ký riêng của WebSphere. Nếu tôi chạy mã giống như một ứng dụng độc lập nó đăng nhập riêng của Java được sử dụng

0

Theo tài liệu java-doc của commons-logging

lớp bê tông của LogFactory mà thực hiện các thuật toán sau đây để tự động chọn khai thác gỗ lớp thực hiện để nhanh chóng một wrapper cho:

  • Sử dụng một thuộc tính cấu hình nhà máy tên org.apache.commons.logging.Log để xác định các yêu cầu lớp thực hiện.
  • Sử dụng thuộc tính hệ thống để xác định org.apache.commons.logging.Log lớp thực hiện yêu cầu.
  • Nếu Log4J có sẵn, trở về một thể hiện của org.apache.commons.logging.impl.Log4JLogger.
  • Nếu JDK 1.4 hoặc mới hơn có sẵn, trở về một thể hiện của org.apache.commons.logging.impl.Jdk14Logger.
  • Nếu không, trả về một thể hiện của org.apache.commons.logging.impl.SimpleLog

Do đó suy luận là:

  • commons-logging là hơn trừu tượng. Nó có thể sống mà không cần LOG4J.
  • Nếu Log4j tồn tại, nó sẽ chọn nó. Nếu không, mặc định khác có sẵn.
  • LOG4J phổ biến vì dễ dàng chuyển hướng đầu ra thành tệp và linh hoạt để định cấu hình cấp nhật ký.

javadoc URL: https://commons.apache.org/proper/commons-logging/javadocs/api-1.1.3/index.html

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