log4j2可以打印到控制台,但無法打印到文件


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()的參數值要相同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM