เราจะปิดเอาต์พุตLog4Jทั้งหมดอย่างรวดเร็วโดยใช้log4j.properties
ไฟล์ได้อย่างไร?
เราจะปิดเอาต์พุตLog4Jทั้งหมดอย่างรวดเร็วโดยใช้log4j.properties
ไฟล์ได้อย่างไร?
คำตอบ:
ตั้งค่าระดับเป็นปิด (แทนที่จะเป็น DEBUG, INFO, ... )
หากคุณต้องการปิดการบันทึกโดยใช้โปรแกรมให้ใช้
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
log4j.rootLogger=OFF
คุณสามารถเปลี่ยนระดับเป็นปิดซึ่งควรกำจัดการบันทึกทั้งหมด ตามเว็บไซต์ log4j ระดับที่ถูกต้องตามลำดับความสำคัญ ได้แก่ TRACE, DEBUG, INFO, WARN, ERROR, FATAL มีระดับหนึ่งที่ไม่มีเอกสารเรียกว่า OFF ซึ่งเป็นระดับที่สูงกว่า FATAL และปิดการบันทึกทั้งหมด
คุณยังสามารถสร้าง root logger พิเศษเพื่อไม่ให้บันทึกอะไรเลย (level OFF) เพื่อให้คุณสามารถสลับ root loggers ได้อย่างง่ายดาย นี่คือโพสต์ที่จะช่วยให้คุณเริ่มต้นได้
คุณอาจต้องการอ่านคำถามที่พบบ่อยของ Log4Jเพราะฉันคิดว่าการปิดการบันทึกทั้งหมดอาจไม่ช่วยอะไร แน่นอนว่าจะไม่ทำให้แอปของคุณเร็วขึ้นมากนักเนื่องจากมีการเรียกใช้รหัสการบันทึกจนถึงจุดที่ log4j ตัดสินใจว่าไม่จำเป็นต้องบันทึกรายการนี้
เปลี่ยนระดับเป็นสิ่งที่คุณต้องการ (ฉันใช้ Log4j2 เวอร์ชัน 2.6.2) นี่เป็นวิธีที่ง่ายที่สุดให้เปลี่ยนเป็น<Root level="off">
ตัวอย่างเช่น: สภาพแวดล้อมการพัฒนาไฟล์log4j2.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>
สภาพแวดล้อมการผลิต
<?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>
นอกจากนี้ยังสามารถปิดการบันทึกโดยใช้โปรแกรมได้ด้วย:
Logger.getRootLogger().setLevel(Level.OFF);
หรือ
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
สิ่งเหล่านี้ใช้การนำเข้า:
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.NullAppender;