log4j2的xml配置控制檯打印日誌和自定義打印到指定日誌文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <!-- 控制檯打印日誌 -->
        <Console name="consolePrint" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <!-- 將日誌輸出到指定文件 fileName屬性值爲日誌文件地址-->
        <File name="LogFile" fileName="D:\file.log" append="false">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </File>
        <File name="SqlLogFile" fileName="D:\mybatis.log" append="false">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
        </File>

    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="consolePrint" />
        </Root>

        PS:配置多個logger可以指定不同類或包下打印的日誌輸出到不同的文件裏,name屬性值設置爲指定的類或包,additivity設置爲"false"將只作用於當前appender-ref,即sql不會打印在root指定的appender(控制檯)裏,只會單獨打印在指定的日誌文件(mybatis.log)中
        <!-- 配置mybatis打印sql 指定mapper所在包的全路徑 -->
        <logger name="com.domain.mapper" level="DEBUG" additivity="false">
            <appender-ref ref="SqlLogFile" />
        </logger>

        <!-- 將com.test包下的Test類中的級別不小於INFO的日誌既打印到root指定的appender(控制檯)中又單獨打印到指定的日誌文件(file.log)中 -->

        <logger name="com.test.Test" level="INFO" additivity="true">
            <appender-ref ref="LogFile" />
        </logger>

    </Loggers>
</Configuration>
 

 

 

package com.test;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Test {

  private Logger logger = LogManager.getLogger(Test.class);

  public void test() {

       logger.info("我將被打印到file.log中");

}

  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章