log4j ver 1.x:
Như những người khác đã nói, log4j tìm kiếm các tập tin cấu hình đầu tiên trong classpath. Xem: http://logging.apache.org/log4j/1.2/manual.html
Nhưng khi có cả tệp 'log4j.xml' và 'log4j.properties' trong đường dẫn lớp, có vẻ như từ thử nghiệm mà log4j ưu tiên cho 'log4j.xml' trên 'log4j.properties'.
ví dụ: Đầu tiên, log4j dường như tìm trong đường dẫn lớp cho tệp 'log4j.xml' đầu tiên. Nếu không có, thì log4j dường như sau đó tìm trong classpath cho tệp 'log4j.properties' đầu tiên.
Sao chép và dán từ mã dưới đây có thể giúp trong việc xác định những tập tin cấu hình đang được sử dụng:
import org.apache.log4j.Logger;
public class TestLog4j
{
static
{
System.out.println("Classpath: [" + System.getProperty("java.class.path") + "]");
System.out.println("Found logging configuration files:");
System.out.println(" log4j.xml: " + Logger.getRootLogger().getClass().getResource("/log4j.xml"));
System.out.println(" log4j.properties: " + Logger.getRootLogger().getClass().getResource("/log4j.properties"));
}
public static void main(String[] args)
{
System.out.println("main():");
}
}
Edit:
log4j ver 2.x:
Các thứ tự tìm kiếm cho tệp cấu hình mặc định được ghi lại ở đây: http://logging.apache.org/log4j/2.x/manual/configuration.html
tức là đối với phiên bản log4j 2.x, nếu không tìm thấy tệp cấu hình ưu tiên cao hơn (ví dụ: log4j2-test. [thuộc tính | yaml | json | xml]) thì tệp log4j2.properties được sử dụng nếu tìm thấy trong classpath. Lưu ý rằng log4j2.xml có mức ưu tiên thấp nhất, và sẽ chỉ được sử dụng nếu không tìm thấy tập tin cấu hình 'yaml' hoặc 'json' của log4j2 '.
Lưu ý: Để hỗ trợ gỡ lỗi các vấn đề cấu hình log4j, hãy đặt thuộc tính 'log4j.debug', ví dụ: với:
java -Dlog4j.debug ...
Xem thêm:How to initialize log4j properly?
Nguồn
2014-10-15 20:24:53
Tôi có một yêu cầu cụ thể Nếu tôi muốn tải cả nộp các thuộc tính làm thế nào tôi có thể đạt được nó? Tôi có nghĩa là các tập tin log4j.properties từ cả hai a.jar và b.jar nên được nạp ... Có cách nào không ?? – Gourabp
Tại sao bạn cần phải tải cả hai? Mục tiêu của việc định cấu hình bên ngoài tệp là có thể định cấu hình ghi nhật ký theo cách bạn muốn. Vì vậy, các tập tin jar thậm chí không nên đi kèm với một tập tin log4j.xml đi kèm.Thay vào đó, chúng sẽ ghi lại logger mà chúng sử dụng (theo quy ước, tên logger là tên lớp), và sau đó là trình ứng dụng, sử dụng cả hai tệp jar, sẽ tạo tệp cấu hình riêng của nó, chứa cấu hình cho tất cả các thư viện được sử dụng trong ứng dụng. –
Tôi muốn tải cả hai người trong số họ vì tôi đang viết một api của khách hàng nơi tôi muốn ghi nhật ký api cụ thể của khách hàng vào một tệp riêng biệt. ứng dụng có thể có cấu hình log4j riêng nhưng tôi không muốn phía máy khách thay đổi bất cứ thứ gì. Tôi sẽ chỉ cung cấp cho họ các api jar, nơi api cụ thể appender và logger sẽ được xác định. Cũng lưu ý rằng tôi không muốn đạt được nó theo chương trình tôi muốn làm điều đó bằng cách cấu hình. – Gourabp