其他详细内容可查询springboot官网。
Spring Boot docs – Configure Logback for logging
说明:
1外部依赖spring-boot-starter内嵌spring-boot-logging无须再引入该依赖。
2.该日志功能在Windows系统与Linux均可进行,但是需要区分配置。
具体日志显示如下:
具体实现流程:
1.开启输出文件配置
根据官网文档说明,在全局配置里增加日志属性,并且增加logback-spring.xml文件,否则日志文件只会记录在项目内部的logging.file位置。
所以配置开启只需在application.properties写下面这一句
#LOGGING
logging.config=classpath:logback-spring.xml
2.重点配置logback-spring.xml文件
下面我根据具体配置进行说明,注意格式要求,环境不同,对应配置不同:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL -->
<configuration>
<!-- 文件输出位置配置 -->
<property name="PATTERN" value="%-5level [%d{HH:mm:ss.SSS}] [%thread] %logger{36} - %msg%n" />
<!--windows环境下打印日志写这2句-->
<property name="LOG_PATH" value="D:/log" />
<property name="LOG_File" value="log_info" />
<!--linux环境下打印日志写这2句-->
<property name="Linux_LOG_PATH" value="/usr/local/log />
<property name="Linux_LOG_File" value="log_info" />
<!-- 控制台日志输出配置 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!--根据application.properties里的环境,如果是spring.profiles.active=dev,写下面开发环境的配置-->
<!--开发环境文件日志输出配置 -->
<appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 只打印info以及更高级别信息日志 -->
<level>INFO</level>
</filter>
<encoder charset="UTF-8">
<pattern>${PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_File}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<appender name="ERROR_FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_File}_ERROR.%d{yyyy-MM-dd}_ERROR.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="test,dev">
<root level="ERROR">
<appender-ref ref="ERROR_FILE_LOG" />
</root>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILELOG" />
</root>
</springProfile>
<!--否则写下面生产环境的配置-->
<!-- 生产环境 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${Linux_LOG_PATH}/${Linux_LOG_File}_info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 只打info及更高级别信息日志 -->
<level>INFO</level>
</filter>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${Linux_LOG_PATH}/${Linux_LOG_File}_error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<logger name="com.backstage" level="ERROR">
<appender-ref ref="ERROR_FILE" />
</logger>
<logger name="com.backstage" level="INFO">
<appender-ref ref="INFO_FILE" />
</logger>
<!-- 生产环境 -->
<springProfile name="prod">
<root level="ERROR">
<appender-ref ref="ERROR_FILE" />
</root>
<root level="Info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="INFO_FILE" />
</root>
</springProfile>
</configuration>
然后你就可以在对应的目录下看到输出的日志了,我这里是所有的日志输出一个文件,然后再有错误的日志输出一个文件。