1.SpringBoot设置日志输出级别
越高包含的就越多,输出的信息也就越多
TRACE DEBUG INFO WARN ERROR FATAL
#设置日志级别
logging:
level:
root: warn
2.Logback日志工具使用
1.首先需要把你yaml文件里面关于日志的配置去掉,避免冲突报错
#mybatis日志
#mybatis-plus:
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#设置日志级别
#logging:
# level:
# root: warn
2.在resource目录下创建logback-spring.xml文件
?xml version="1.0" encoding="UTF-8"?>
configuration scan="true" scanPeriod="10 seconds">
!-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
contextName>logback/contextName>
!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
property name="log.path" value="F:/logback/study" />
!-- 彩色日志 -->
!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
!-- magenta:洋红 -->
!-- boldMagenta:粗红-->
!-- cyan:青色 -->
!-- white:白色 -->
!-- magenta:洋红 -->
property name="CONSOLE_LOG_PATTERN"
value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>
!--输出到控制台-->
appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
!-- 例如:如果此处配置了INFO级别,则后面其他位置即使配置了DEBUG级别的日志,也不会被输出 -->
filter class="ch.qos.logback.classic.filter.ThresholdFilter">
level>INFO/level>
/filter>
encoder>
Pattern>${CONSOLE_LOG_PATTERN}/Pattern>
!-- 设置字符集 -->
charset>UTF-8/charset>
/encoder>
/appender>
!--输出到文件-->
!-- 时间滚动输出 level为 INFO 日志 -->
appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
!-- 正在记录的日志文件的路径及文件名 -->
file>${log.path}/log_info.log/file>
!--日志文件输出格式-->
encoder>
pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern>
charset>UTF-8/charset>
/encoder>
!-- 日志记录器的滚动策略,按日期,按大小记录 -->
rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
!-- 每天日志归档路径以及格式 -->
fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log/fileNamePattern>
timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
maxFileSize>100MB/maxFileSize>
/timeBasedFileNamingAndTriggeringPolicy>
!--日志文件保留天数-->
maxHistory>15/maxHistory>
/rollingPolicy>
!-- 此日志文件只记录info级别的 -->
filter class="ch.qos.logback.classic.filter.LevelFilter">
level>INFO/level>
onMatch>ACCEPT/onMatch>
onMismatch>DENY/onMismatch>
/filter>
/appender>
!-- 时间滚动输出 level为 WARN 日志 -->
appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
!-- 正在记录的日志文件的路径及文件名 -->
file>${log.path}/log_warn.log/file>
!--日志文件输出格式-->
encoder>
pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern>
charset>UTF-8/charset> !-- 此处设置字符集 -->
/encoder>
!-- 日志记录器的滚动策略,按日期,按大小记录 -->
rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log/fileNamePattern>
timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
maxFileSize>100MB/maxFileSize>
/timeBasedFileNamingAndTriggeringPolicy>
!--日志文件保留天数-->
maxHistory>15/maxHistory>
/rollingPolicy>
!-- 此日志文件只记录warn级别的 -->
filter class="ch.qos.logback.classic.filter.LevelFilter">
level>warn/level>
onMatch>ACCEPT/onMatch>
onMismatch>DENY/onMismatch>
/filter>
/appender>
!-- 时间滚动输出 level为 ERROR 日志 -->
appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
!-- 正在记录的日志文件的路径及文件名 -->
file>${log.path}/log_error.log/file>
!--日志文件输出格式-->
encoder>
pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n/pattern>
charset>UTF-8/charset> !-- 此处设置字符集 -->
/encoder>
!-- 日志记录器的滚动策略,按日期,按大小记录 -->
rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log/fileNamePattern>
timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
maxFileSize>100MB/maxFileSize>
/timeBasedFileNamingAndTriggeringPolicy>
!--日志文件保留天数-->
maxHistory>15/maxHistory>
/rollingPolicy>
!-- 此日志文件只记录ERROR级别的 -->
filter class="ch.qos.logback.classic.filter.LevelFilter">
level>ERROR/level>
onMatch>ACCEPT/onMatch>
onMismatch>DENY/onMismatch>
/filter>
/appender>
!--
logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appender>。
logger>仅有一个name属性,
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
如果未设置此属性,那么当前logger将会继承上级的级别。
-->
!--
使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
第一种把root level="INFO">改成root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
第二种就是单独给mapper下目录配置DEBUG模式,代码如下,这样配置sql语句会打印,其他还是正常DEBUG级别:
-->
!--开发环境:打印控制台-->
springProfile name="dev">
!--可以输出项目中的debug日志,包括mybatis的sql日志-->
logger name="com.guli" level="INFO" />
!--
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
可以包含零个或多个appender元素。
-->
root level="INFO">
appender-ref ref="CONSOLE" />
appender-ref ref="INFO_FILE" />
appender-ref ref="WARN_FILE" />
appender-ref ref="ERROR_FILE" />
/root>
/springProfile>
!--生产环境:输出到文件-->
springProfile name="pro">
root level="INFO">
appender-ref ref="CONSOLE" />
appender-ref ref="DEBUG_FILE" />
appender-ref ref="INFO_FILE" />
appender-ref ref="ERROR_FILE" />
appender-ref ref="WARN_FILE" />
/root>
/springProfile>
/configuration>
2.运行后指定路径就会生成.log文件
3.此时一般默认只有info信息写入,其他两个error和warn是没有信息的,有需要写入的话,方法如下:
- 在需要的类上面添加注解@Slf4j
- 在方法里面用log.error()和log.warn()的方法写入信息,就可以分别输出到对应的.log文件里面了
另外还有像log4j等其他关于日志处理的工具,也会很好用。
log4j的使用
log4j.properties:
#Console Log
log4j.rootLogger=INFO,console,debug,info,warn,error
LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - %5p [%t] --- %c{1}: %m%n
#A1--Print log to Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=${LOG_PATTERN}
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.Threshold=INFO
log4j.appender.info.File=${LOG_PATH}/${LOG_FILE}_info.log
log4j.appender.info.DatePattern='.'yyyy-MM-dd
log4j.appender.info.layout = org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=${LOG_PATTERN}
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.Threshold=ERROR
log4j.appender.error.File=${LOG_PATH}/${LOG_FILE}_error.log
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=${LOG_PATTERN}
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.File=${LOG_PATH}/${LOG_FILE}_debug.log
log4j.appender.debug.DatePattern='.'yyyy-MM-dd
log4j.appender.debug.layout = org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=${LOG_PATTERN}
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.Threshold=WARN
log4j.appender.warn.File=${LOG_PATH}/${LOG_FILE}_warn.log
log4j.appender.warn.DatePattern='.'yyyy-MM-dd
log4j.appender.warn.layout = org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=${LOG_PATTERN}
#MQ发送记录
log4j.logger.mqLog=INFO,mqLog
log4j.additivity.mqLog = false
log4j.appender.mqLog=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.mqLog.Threshold=ERROR
log4j.appender.mqLog.File=${LOG_PATH}/${LOG_FILE}_mqLog.log
log4j.appender.mqLog.DatePattern='.'yyyy-MM-dd
log4j.appender.mqLog.layout = org.apache.log4j.PatternLayout
log4j.appender.mqLog.layout.ConversionPattern=${LOG_PATTERN}