1 lo4j2 是所有日志框架里面 性能最好的
2 简单配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration status="off" monitorInterval="1800">
<Properties>
<Property name="APP_NAME">hyjj_back</Property>
<!--设置日志文件存储路径为tomcat/logs/${APP_NAME}-->
<Property name="LOG_FILE_PATH">${sys:catalina.homeOFF}/logs/${APP_NAME}</Property>
<!--设置日志输出格式-->
<Property name="PATTERN_FORMAT">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n</Property>
</Properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT" >
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%M] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="5 MB" />
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
</RollingFile>
</appenders>
<!-- logger代表用于输出日志信息的具体对象-->
<loggers>
<logger name="cn.springmvc" level="debug" />
<logger name="org.springframework" level="debug" />
<logger name="org.mybatis" level="info" />
<logger name="com.zaxxer.hikari" level="off"/>
<root level="debug">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFile"/>
</root>
</loggers>
</configuration>
三个重要概念
appender : 追加器 ,日志信息需要写到那里 可以为控制台 文件 数据库
root和logger :logger设定的具体类的信息的打印日志会传输到root里面,但是如果没有具体指定某个类的打印级别,就是默认root,如果指定就会将指定的日志打印信息传输到root 小于root级别的信息就不会打出
高阶
如果 当前的logger 配置的appender 那么可能会打印两次 可选的是 不输入到root里面
就是用additivity=“false”,这个就代表,不传递给父节点,日志不传给父节点,就算父节点配置了appender也是不会输出日志的!