Tôi muốn thêm đăng nhập vào một ứng dụng tôi đang phát triển, bằng cách sử dụng apache log4j. Tại thời điểm này, tôi muốn chuyển hướng tất cả các thông điệp tường trình cho INFO cấp và thấp hơn (TRACE, DEBUG) đến stdout và tất cả các thông điệp tường trình khác từ WARN trở lên (ERROR, FATAL) đến stderr. Ví dụ:Lỗi ghi nhật ký để gỡ lỗi và gỡ lỗi, thông tin để stdout với log4j
...
logger.info("Processing at some point"); // must be written to stdout
logger.debug("Point x was processed"); // must be written to stdout
logger.warn("Incorrect point config"); // must be written only to stderr
logger.error("Exception occurred at point x"); // must be written only to stderr
Vậy tệp log4j.properties của tôi là gì? Dưới đây là cách nhìn vào mẫu này:
log4j.rootLogger=DEBUG, stdout, stderr
# configure stdout
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n
# configure stderr
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stderr = org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold = WARN
log4j.appender.stderr.Target = System.err
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n
Vấn đề với cấu hình ở trên là logger.error() ... cũng được in ở chế độ xuất chuẩn.
Cảm ơn bạn đã trả lời nhanh chóng của bạn. Có cách nào để phân lớp các appender (ví dụ như stdout appender) vì vậy khi một bản ghi trên INFO sẽ bị từ chối? Điều gì về các bộ lọc: thiết lập một bộ lọc cho stdout để chỉ chấp nhận các bản ghi TRACE, DEBUG, INFO? – Elvis
Tuyệt đối. Bạn có thể tạo appender của riêng bạn và trỏ đến nó trong tập tin cấu hình. –
Đây là một ví dụ về (trong cấu hình xml) http://stackoverflow.com/questions/4825072/how-to-set-filter-in-the-log4j-xml như vậy là giống như: log4j.appender.stdout. Filter = org.apache.varia.LevelRangeFilter log4j.appender.stdout.Filter.LevelMax = INFO log4j.appender.stdout.Filter.LevelMin = TRACE? Nếu có vẻ như nó không hoạt động trong trường hợp của tôi. Một thông báo cảnh báo được gửi bởi log4j cho biết bộ lọc không thể được thiết lập ... – Elvis