企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、需求: spring boot 用自带的logback打印日志: 多环境打印. 1. 生产环境输出到控制台和文件,一天一个文件,保留30天. 2. 开发环境输出到控制台和打印sql(mybatis)输出. 3. 测试环境输出到控制台. **前提**:项目已经支持application.yml的profile多环境配置 ![](https://img.kancloud.cn/18/dc/18dcb588ad4756a70365a87f6c6e5e5e_394x174.png) ## 二、配置文件 因为logback是spring boot的默认日志框架,所以不需要引入maven依赖,直接上logback-spring.xml放在resources下面 ![](https://img.kancloud.cn/06/37/06370b65606f9ca9b68866ea256e0d74_425x249.png) ~~~ <?xml version="1.0" encoding="UTF-8"?> <configuration> <!--引入默认的一些设置--> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!--web信息--> <logger name="org.springframework.web" level="info"/> <!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_PATH" value="D:/logs/boot-launch"/> <!--写入日志到文件的appender--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名,每天一个文件--> <FileNamePattern>${LOG_PATH}.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <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> <!--异步到文件--> <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>500</queueSize> <appender-ref ref="FILE"/> </appender> <!--生产环境:打印控制台和输出到文件--> <springProfile name="prod"> <root level="info"> <appender-ref ref="CONSOLE"/> <appender-ref ref="asyncFileAppender"/> </root> </springProfile> <!--开发环境:打印控制台--> <springProfile name="dev"> <!-- 打印sql --> <logger name="com.zimug.bootlaunch" level="DEBUG"/> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> </root> </springProfile> <!--测试环境:打印控制台--> <springProfile name="test"> <root level="info"> <appender-ref ref="CONSOLE"/> </root> </springProfile> </configuration> ~~~ ## 三、测试一下 ![](https://img.kancloud.cn/73/5b/735be3679f38bd0bd49efb72215ad237_348x200.png) ~~~ @RestController @Slf4j public class LogDemoController { //private static Logger log= LoggerFactory.getLogger(LogDemo.class); @GetMapping("/logdemo") public String log(){ log.trace("======trace"); log.debug("======debug"); log.info("======info"); log.warn("======warn"); log.error("======error"); return "logok"; } } ~~~ 启动服务测试一下 [http://127.0.0.1:8899/kimgao/logdemo](http://127.0.0.1:8899/kimgao/logdemo) ![](https://img.kancloud.cn/7f/82/7f82b7dccf6f2ab3d6f2aa14e03c60f8_773x261.png) ![](https://img.kancloud.cn/95/34/95348a79a8d08a0634873083a9d8d141_634x241.png) prod打印的是info级别的日志所以能看到打印的内容为: ![](https://img.kancloud.cn/49/60/4960705028728cbe9b90bf5887b1a5c8_1498x198.png) 日志保存路径: ![](https://img.kancloud.cn/96/a2/96a2a37be6f01678b0be6491078cb0ed_852x112.png) ![](https://img.kancloud.cn/ca/ae/caae421b15632e88dea8ac29985a2131_1226x244.png) ![](https://img.kancloud.cn/ad/fc/adfc191bc4bb8e0f690cf67d46df7d20_1726x520.png)