2013-05-23 42 views

Trả lời

15

Bạn có thể sử dụng phương pháp tĩnh #initialize(String contextName, ClassLoader loader, String configLocation) (xem nguồn here) trong org.apache.logging.log4j.core.config.Configurator. (Bạn có thể vượt qua null cho bộ nạp lớp.)

Hãy nhận biết rằng lớp này không phải là một phần của API công cộng để mã của bạn có thể phá vỡ với bất kỳ phiên bản nhỏ.

Để hoàn chỉnh, bạn cũng có thể xác định vị trí của tập tin cấu hình với sở hữu hệ thống này:

-Dlog4j.configurationFile=path/to/log4j2.xml 
+0

Đây không phải là cách đơn giản bởi vì Configurator (và những người khác) có thể được mở rộng (http://logging.apache.org/log4j/ 2.0/manual/extending.html) – mcoolive

+1

Tôi gọi hàm '' 'Configurator.initialize()' '' trong dự án của tôi ở đâu? Tôi yêu cầu nó bởi vì tôi đang làm nó trong một khối tĩnh và Log4j đang đăng nhập mà nó không tìm thấy tệp trước khi mã của tôi chạy. –

1

Sử dụng LoggerContext cho phép setConfigLocation.

File f = new File(this.logConfigFile); 
URI fc = f.toURI();   
System.out.println("Loading logging config file: " + fc); 
Logger l = (Logger) LogManager.getLogger(LogManager.ROOT_LOGGER_NAME); 
l.getContext().setConfigLocation(fc); 

hoặc cách khác

LoggerContext.getContext().setConfigLocation(java.net.URI); 
0

Bạn có thể khởi tạo như dưới đây cũng

ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4j file Path)); 
XmlConfiguration xmlConfig = new XmlConfiguration(source); 
Logger logger = (Logger) LogManager.getLogger(); 
logger.getContext().start(xmlConfig); 

Trong mỗi lớp học mà bạn có thể nhận được dụ logger như sau

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

private final Logger logger = LogManager.getLogger(ABC.class); 
+0

[org.apache.logging.log4j.Logger] (https://logging.apache.org/log4j/2.0/log4j-api/apidocs/org/apache/logging/log4j/Logger.html) không có getContext() phương pháp. – Boris

1

Trong Windows, hãy lưu ý rằng bạn cần phải sử dụng một URI với log4j.configurationFile tài sản

-Dlog4j.configurationFile=file://C:\path\to\log4j2.xml 
+0

Tôi tin rằng thuộc tính hệ thống chấp nhận đường dẫn tệp thông thường (tương đối hoặc tuyệt đối) cũng như URI. –

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