springboot 项目的 spring-boot-starter-web 依赖默认使用的是 logback 作为日志框架,所以如果我们就想使用 logback 的话, 就无需额外引入依赖了。
具体配置如下:
application.yml
logging:pattern:dateformat: yyyy-MM-dd HH:mm:ss.SSSlevel:root: infocom.yxai: debug
application-dev.yml 和 application-prod.yml :
logging:file:path: /var/log/tylerzhong/backend # 指定日志输出路径,方便后续的日志采集
我这里 local 环境本地启动需想要将日志输出到文件中,只需要输出到控制台即可,所以 application-local.yml 不用配置上面的代码。
logback-spring.xml :
<configuration debug="true"><!-- 引用Spring Boot全局配置文件中的日期格式配置项 --><springProperty scope="context" name="dateformat" source="logging.pattern.dateformat" defaultValue="yyyy-MM-dd HH:mm:ss.SSS"/><springProperty scope="context" name="APP_NAME" source="spring.application.name"/><springProperty scope="context" name="LOG_FILE" source="logging.file.path"/><!-- 定义颜色编码 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><!-- 定义日志输出到控制台的appender --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%clr(%d{${dateformat}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([%15.15t]){faint} [%-40.40logger{39}] %clr(%msg%n){faint}%wEx</pattern></encoder></appender><!-- 开发环境配置 --><springProfile name="local"><root level="DEBUG"><appender-ref ref="STDOUT" /></root><!-- 开发环境专属的详细日志 --><logger name="com.tylerzhong" level="TRACE" additivity="false"><appender-ref ref="STDOUT" /></logger></springProfile><springProfile name="!local"><!-- 文件日志:输出全部日志到文件 --><appender name="FILE_INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}/${APP_NAME}.log</file><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>ACCEPT</onMismatch></filter><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxHistory>180</maxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>50MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{${dateformat}} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 错误日志:用于将错误日志输出到独立文件 --><appender name="FILE_ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}/error-${APP_NAME}.log</file><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}/error-${APP_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxHistory>180</maxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>50MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{${dateformat}} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /><appender-ref ref="FILE_INFO_LOG" /><appender-ref ref="FILE_ERROR_LOG" /></root></springProfile></configuration>