SpringBoot默认使用,logback进行日志管理,在maven dependency中默认包含spring-boot-starter-logging包:
logback的配置方法,在application.yml中进行配置:
(1)log级别:
logging.level:
root:全局设定
包+类名: 单独一个类的设定
取值:TRACE / DEBUG / INFO / WARN / ERROR / FATAL / OFF
(2)log位置:
logging.file:绝对路径+文件名
logging.path:路径,文件名默认spring.log
(3)log格式:
logging.pattern.console:控制台log格式
logging.pattern.file:文件log格式
(4)log配置文件:
logging.config:绝对路径 : logback.xml(放到resource下,替代默认配置,不需要logging.config)。
(5)输出log:
Logger log = LoggerFactory.getLogger(this.getClass()); //获得log对象
log.Info("messages."); //输出log,自带回车。
logback.xml的demo:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 是否扫描配置文件变化 扫描间隔,无单位时默认毫秒 是否输出logback的log -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--定义变量的标签 需用绝对路径 Windows下/根路径从当前盘符的根开始 -->
<property name="LOG_HOME" value="/home" />
<!-- 定义输出的标签 控制台输出 -->
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/springbootApp_%d{yyyyMMddHHmmss}.log
</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小 -->
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 root代表全局,可以附加指定包/类,单独说明level:更高或者更低 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!-- 配合yml中指定的环境:和现有全局设置冲突时无效 -->
<springProfile name="prod,test,dev">
<logger name="类/包" level="INFO" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
</springProfile>
</configuration>