异常:一般是包冲突引起的
1 SpringBoot整合Log4j2步骤:
删除spring-boot-starter-parent默认使用spring-boot-starter-logging依赖
在pom.xml中增加spring-boot-starter-log4j2依赖
创建log4j2.xml文件即可
执行,指定目录会生成相应的log文件
2 加入依赖和log4j2.xml文件
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions><!-- 去掉springboot默认配置 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <!-- 引入log4j2依赖 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
3.resources目录下创建log4j2.xml文件
<!--定义appender--> <appenders> <!--控制台的输出配置--> <console name="Console" target="SYSTEM_OUT"> <!-- 设置控制台只输出INFO及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <!--输出日志的格式--> <PatternLayout pattern="${log_pattern}"/> </console> <!-- 所有的日志信息会打印到此文件中,append=false每次启动程序会自动清空 --> <!-- <File name="all" fileName="${file_path}/all.log" append="true"> <PatternLayout pattern="${log_pattern}"/> </File>--> <!-- 该RollingFile存储INFO级别的日志, 默认存储到 fileName 文件中 超过SizeBasedTriggeringPolicy的设定值,则存储到 filePattern 文件中 --> <RollingFile name="RollingFileInfo" fileName="${file_path}/info.log" filePattern="${file_path}/${backup_folder}/info${backup_file_suffix}"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 写入日志文件的模板 --> <PatternLayout pattern="${log_pattern}"/> <Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,超过该数量,会滚动删除前面的记录 --> <DefaultRolloverStrategy max="5"> <Delete basePath="" maxDepth=""> <IfFileName glob="*.log" /> <IfLastModified age="*1d" /> </Delete> </DefaultRolloverStrategy> <!--多长时间滚动一次--> <TimeBasedTriggeringPolicy interval="2 hour" /> <!-- 一个日志文件的最大大小 --> <SizeBasedTriggeringPolicy size="${file_max_size}"/> </Policies> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${file_path}/warn.log" filePattern="${file_path}/${backup_folder}/warn${backup_file_suffix}"> <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="${log_pattern}"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${file_max_size}"/> </Policies> </RollingFile> <RollingFile name="RollingFileError" fileName="${file_path}/error.log" filePattern="${file_path}/${backup_folder}/error${backup_file_suffix}"> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="${log_pattern}"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${file_max_size}"/> </Policies> </RollingFile> </appenders> <!-- 只有定义了logger并使用appender-ref,appender才会生效 --> <loggers> <!--过滤掉spring和hibernate的一些无用的debug信息--> <logger name="org.springframework" level="INFO"/> <logger name="org.mybatis" level="INFO"> <!-- 添加如下设置,控制台会再打印一次 --> <AppenderRef ref="Console"/> </logger> <root level="INFO"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </loggers>
4.级别描述
机制:如果一条日志信息的级别大于等于配置文件的级别,就记录。
trace:追踪,就是程序推进一下,可以写个trace输出
debug:调试,一般作为最低级别,trace基本不用。
info:输出重要的信息,使用较多
warn:警告,有些信息不是错误信息,但也要给程序员一些提示。
error:错误信息。用的也很多。
fatal:致命错误。
5.输出源控制
- CONSOLE(输出到控制台)
- FILE(输出到文件)
6.输出格式
- SimpleLayout:以简单的形式显示
- HTMLLayout:以HTML表格显示
- PatternLayout:自定义形式显示