log4j2开始,配置文件不支持使用.properties格式,只支持 xml、json、jsn 格式配置文件。默认在 src/main/resources 下,可以自己创建log4j2.xml文件来配置。 

配置文件的优先级(高 -> 低):

log4j2-test.json / log4j2-test.jsn --> log4j2-test.xml --> log4j2.json / log4j2.jsn --> log4j2.xml

log4j2.xml 配置模板

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--status表示log4j2本身内部信息的输出级别,默认为OFF;设置成trace,可以输出log4j2各种内部详细信息-->
<!--monitorInterval是log4j2自动检测配置修改并重新配置的间隔,单位秒-->
<configuration status="WARN" monitorInterval="30">

    <properties>  
        <property name="LOG_HOME">/opt/logs/hafiz/log4j2Demo/logs</property>  
        <property name="ERROR_LOG_FILE_NAME">error</property>  
    </properties>
	
    <appenders>
		<!--输出日志到控制台的设置,默认SYSTEM_OUT,还有SYSTEM_ERR-->
        <console name="Console" target="SYSTEM_OUT">
			<!--日志的输出格式-->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>
		
		<!--指定输出的文件名和路径,append为false每次运行程序会自动清空日志,PatternLayout输出格式-->
		<File name="log" fileName="log/test.log" append="false">
		   <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
		</File>
		
		<!--指定日志级别,输出日志到文件的路径,日志文件名称格式,设置超过size自动压缩-->
        <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log" 
				filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <!--控制台输出日志级别,匹配就输出,不匹配的级别不输出-->        
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
			<!--日志输出格式-->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
				<!--日志文件达到size开始压缩成新文件-->
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
        <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
			<!--同一文件夹下文件数-->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
        <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
    </appenders>
    
    <loggers>
		<!--指定日志输出设置-->
        <logger name="org.springframework" level="INFO"></logger>
		<!--logger的值里没有指定appender,那么使用root日志形式输出-->
        <root level="all">
			<!--指定选择上面声明的哪一个appender-->
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
    </loggers>
</configuration>