Làm cách nào để có thể nhanh chóng tắt tất cả đầu ra Log4J bằng cách sử dụng một log4j.properties
tệp?
Câu trả lời:
Nếu bạn muốn tắt ghi nhật ký theo chương trình thì hãy sử dụng
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
Bạn có thể thay đổi mức độ thành TẮT để loại bỏ tất cả việc ghi nhật ký. Theo trang web log4j, các cấp độ hợp lệ theo thứ tự quan trọng là TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Có một cấp độ không có giấy tờ được gọi là TẮT, cấp độ cao hơn mức FATAL và tắt tất cả ghi nhật ký.
Bạn cũng có thể tạo thêm một trình ghi nhật ký gốc để không ghi nhật ký gì (cấp TẮT), để bạn có thể chuyển đổi trình ghi gốc dễ dàng. Đây là một bài đăng để giúp bạn bắt đầu về điều đó.
Bạn cũng có thể muốn đọc Câu hỏi thường gặp về Log4J, vì tôi nghĩ rằng việc tắt tất cả ghi nhật ký có thể không hữu ích. Nó chắc chắn sẽ không tăng tốc ứng dụng của bạn nhiều như vậy, bởi vì mã ghi nhật ký vẫn được thực thi, cho đến thời điểm mà log4j quyết định rằng nó không cần ghi lại mục nhập này.
Thay đổi mức độ thành những gì bạn muốn. (Tôi đang sử dụng Log4j2, phiên bản 2.6.2). Đây là cách đơn giản nhất, hãy thay đổi thành<Root level="off">
Ví dụ: Môi trường phát triển tệplog4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SimpleConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
<Loggers>
<Root level="info">
<AppenderRef ref="SimpleConsole"/>
</Root>
</Loggers>
</Configuration>
Môi trường sản xuất
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SimpleConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="off">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
<Loggers>
<Root level="off">
<AppenderRef ref="SimpleConsole"/>
</Root>
</Loggers>
</Configuration>
Ngoài ra, cũng có thể tắt đăng nhập theo chương trình:
Logger.getRootLogger().setLevel(Level.OFF);
Hoặc là
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Những thứ này sử dụng nhập khẩu:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;