Có cách nào để chỉ định Log4J 2.x log4j2.xml
vị trí tệp theo cách thủ công (như DOMConfigurator
trong Log4J 1.x), mà không gây rối với classpath và thuộc tính hệ thống?Cách xác định vị trí cấu hình Log4J 2.x?
Trả lời
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
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);
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);
[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
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
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. –
- 1. Sencha Cmd Không thể xác định vị trí 'app.dir' sở hữu cấu hình từ sencha.cfg
- 2. cấu hình log4j trong EAR
- 3. Sử dụng Tệp XML (log4j2.xml) để định cấu hình Log4j 2
- 4. Đặt cấu hình Log4j Loggers Programmatically
- 5. Cách đặt nền-vị trí-x?
- 6. Cách lấy yếu tố vị trí cấu hình web?
- 7. Cách tải vị trí tệp cấu hình wifi trong android
- 8. Cách xác định vị trí của UIBarButtonItem trong UIToolbar?
- 9. Cách xác định vị trí mục dữ liệu trong cấu trúc phân cấp?
- 10. Cách cấu hình log4j trong môi trường thử nghiệm đơn vị?
- 11. Làm thế nào để xác định vị trí chính xác của một hội đồng trong một tập tin cấu hình
- 12. Xác định vị trí của Ruby Gems
- 13. Cách cấu hình log4j 1.2 bằng cách sử dụng xml
- 14. định vị hình nền css (vị trí phủ định?)
- 15. Cách định cấu hình vị trí của mã được tạo trong IntelliJ?
- 16. Làm thế nào để xác định vị trí người dùng với tờ rơi xác định vị trí?
- 17. Cách/vị trí xác định giá trị mặc định của hộp thư đến?
- 18. cách cấu hình cầu cảng để sử dụng log4j?
- 19. slf4j + java.util.logging: cách định cấu hình?
- 20. Cách định cấu hình log4j.properties cho SpringJUnit4ClassRunner?
- 21. Làm thế nào để xác định vị trí vị trí đệm trong emacs
- 22. Xác định vị trí một cách hiệu quả các cột cố định nhóm trong một data.frame
- 23. Sqlalchemy.exc.UnboundExecutionError: Không thể xác định vị trí một ràng buộc cấu hình trên mapper Mapper | SellsTable | bán hoặc Session này
- 24. OpenGL ES 2.x: Ràng buộc cả hai 'GL_TEXTURE_2D` và `GL_TEXTURE_CUBE_MAP` trong cùng một đơn vị hình ảnh kết cấu?
- 25. Không thể xác định vị trí LWP/Simple.pm trong @ INC
- 26. Xác định vị trí quấn trong các phần tử nổi
- 27. Sự khác biệt giữa cấu hình php.ini Vị trí tệp và tệp cấu hình được tải?
- 28. Cách chọn từ vị trí x bằng nhiều giá trị?
- 29. Định cấu hình vị trí máy chủ TFS trong TFS powertools
- 30. Xác định vị trí "const" trong tuyên bố
Đâ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
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. –