package day19; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Hello { static Logger logger = LogManager.getLogger(Hello.class.getName()); public static boolean hello() { // trace 級別的信息 ,單獨列出來是希望你在某個方法或者程序邏輯開始的時候調用 // 和logger.trace("entry")基本一個意思; logger.entry(); // logger.trace("entry"); // error級別的信息,參數就是你輸出 信息 logger.error("Did id again!"); logger.info("我是info信息"); logger.warn("我是warn信息"); logger.debug("我是debug信息"); logger.fatal("我是fatal信息"); // 這個就是制定Level類型的調用, logger.log(Level.DEBUG, "我是debug信息"); // 和entry() 對應的結束方法,和logger.trace("exit");一個意思 logger.exit(); return false; } public static void main(String[] args) { hello(); } }
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <Appenders> <!-- 打印到文件 --> <File name="log" fileName="E:/ECLIPSEWORKSPACE/day19/logfile.log"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SS} [%t] %-5level %logger{36} -%msg%n"/> </File> <!-- 打印到控制台 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers>
<!-- 因name的屬性不等於getLogger方法的參數,導致無法打印到文件 --> <Logger name="Hello" level="ERROR" additivity="false"> <AppenderRef ref="log"/> </Logger> <Root level="trace"> <AppenderRef ref="Console"/> </Root> </Loggers> </configuration>
控制台運行結果:

能創建文件,但是沒有打印內容:

原因:Logger的name屬性要和getLogger()的參數值要相同。

