Tôi muốn có hai logger log4j
khác nhau trong ứng dụng của mình và để không có "chồng chéo" giữa nội dung mà chúng ghi vào nhật ký tôn trọng của chúng.log4j.properties file - nhiều logger trong cùng một lớp
Ví dụ:
- Logger1 viết sự kiện INFO liên quan đến một tập hợp các sự kiện hệ thống
- Logger2 viết sự kiện INFO liên quan đến một loạt các sự kiện hệ thống
- Không nhập sẽ xuất hiện trong nhật ký hai lần
log4j.properties của tôi là như sau:
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Mã của tôi Java là như sau:
public static void main(String[] args) {
PropertyConfigurator.configure(Client.class
.getResource("/log4j.properties"));
xdasLogger = Logger.getLogger("xdasLogger");
logger = Logger.getLogger(Client.class);
logger.info("normal");
xdasLogger.info("xdas");
}
Nhưng giao diện điều khiển đầu ra của tôi là như sau:
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
xdas
Lưu ý rằng "xdas" được đăng nhập bởi cả logger
và xdasLogger
, mà là không mong muốn.
Có ai biết những thay đổi nào tôi cần để đưa vào log4j.properties của mình để thay đổi đầu ra của bàn điều khiển thành sau không?
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
Solution (lấy từ câu trả lời được chấp nhận):
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Giải pháp của bạn có vẻ hoàn toàn chính xác nhưng không hoạt động đối với tôi. Tôi đã thêm những dòng này vào '/ etc/spark/conf/log4j.properties', điều đó có đúng không? Tôi có cần phải khởi động lại «Spark' (hoặc đặt lại bất kỳ thứ gì khác) để các thuộc tính cập nhật được chọn không? –
Bạn đã sử dụng tên logger đã được cấu hình trong log4j.properties cho Spark chưa? Hoặc có thể Spark sử dụng log4j2 có một tệp thuộc tính khác - log4j2.properties? Nếu bạn có thể cung cấp thêm chi tiết, tôi có thể cố gắng giúp – kjp
** @ kjp ** theo như tôi biết, 'Spark 2.3.0' (phát hành ngày 28 tháng 2 năm 2018) vẫn sử dụng' log4j' như đã nói [ở đây] (https : //spark.apache.org/docs/latest/configuration.html#configuring-logging). Ngoài ra, bạn có ý nghĩa gì bởi * "tên logger đã được cấu hình trong log4j.properties cho Spark" *? Trong các tệp 'log4j.properties' tôi thấy các dòng như sau:' log4j.rootCategory = WARN, console' & 'log4j.appender.console = org.apache.log4j.ConsoleAppender' –