5.6. Spring boot with Logging
一般的日志需求可以通过配置 application.properties实现,如果仍不能满足可以使用 logback.xml 配置日志。
logging.file=target/spring.log logging.config=classpath:logback.xml
5.6.1. 打印日志
日志的用法,首先开发中我们根据实际的需要打印不同级别的日志。
package cn.netkiller.web;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;@Controller public class TestController {private static final Logger log = LoggerFactory.getLogger(TestController.class);@RequestMapping("/test/log")@ResponseBodypublic String log() {String message = "Test";log.debug(message);log.info(message);log.warn(message);log.error(message);log.trace(message);return message;} }
然后通过application.properties配置那些需要显示,那些不需要,以及显示的级别是什么。
5.6.2. 日志输出级别
显示所有DEBUG信息
logging.level.root=DEBUG
仅仅显示 springframework 调试信息
logging.level.org.springframework.web=DEBUG
仅仅显示 cn.netkiller.web.TestController 调试信息
private static final Logger log = LoggerFactory.getLogger(TestController.class);log.debug(message);logging.level.cn.netkiller.web.TestController=DEBUG
5.6.3. 禁止控制台输出日志
禁止控制台日志输出,同时将日志写入日志文件.
src/main/resources/application.properties
logging.path=/tmp logging.file=/tmp/spring.log logging.level.root=INFO logging.level.org.springframework.web=DEBUG logging.level.org.hibernate=ERROR
src/main/resources/logback.xml
$ cat src/main/resources/logback.xml <?xml version="1.0" encoding="UTF-8"?> <configuration><include resource="org/springframework/boot/logging/logback/defaults.xml" /><include resource="org/springframework/boot/logging/logback/file-appender.xml" /><root level="INFO"><appender-ref ref="FILE" /></root> </configuration>
使用 java -jar project-version-xxx.jar 启动后控制不会再输出日志
5.6.4. 标准输出
<?xml version="1.0" encoding="UTF-8"?> <configuration><include resource="org/springframework/boot/logging/logback/defaults.xml" /><include resource="org/springframework/boot/logging/logback/file-appender.xml" /><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} : %msg %n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /></root> </configuration>
5.6.5. 日志分割
按日期分割文件
<?xml version="1.0" encoding="UTF-8"?> <configuration><include resource="org/springframework/boot/logging/logback/defaults.xml" /><include resource="org/springframework/boot/logging/logback/file-appender.xml" /><appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><File>logs/spring.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- daily rollover --><FileNamePattern>spring.%d{yyyy-MM-dd}.log</FileNamePattern><!-- keep 30 days' worth of history --><maxHistory>60</maxHistory> </rollingPolicy><encoder><Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern></encoder> </appender><root level="INFO"><appender-ref ref="FILE" /><appender-ref ref="dailyRollingFileAppender" /> </root> </configuration>
通过级别分割日志将 info, error, debug 分割到指定文件中。
<configuration scan="true" scanPeriod="10 seconds"><!-- 控制台日志输出--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d %p (%file:%line\)- %m%n</pattern><charset>UTF-8</charset></encoder></appender><!-- info日志输出--><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%d %p (%file:%line\)- %m%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><File>${LOG_PATH}/www.netkiller.cn.info.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/www.netkiller.cn.info-%d{yyyyMMdd}.log.%i</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></appender><!-- debug 日志输出--><appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%d %p (%file:%line\)- %m%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>DEBUG</level></filter><File>${LOG_PATH}/www.netkiller.cn.debug.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/www.netkiller.cn.debug-%d{yyyyMMdd}.log.%i</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></appender><!--error 日志输出配置 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>%d %p (%file:%line\)- %m%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><File>${LOG_PATH}/www.netkiller.cn.error.log</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/www.netkiller.cn.error-%d{yyyyMMdd}.log.%i</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></appender><root level="DEBUG"><!--<appender-ref ref="STDOUT" /><appender-ref ref="INFO_FILE" /><appender-ref ref="ERROR_FILE" /><appender-ref ref="DEBUG_FILE" />--><appender-ref ref="ERROR_FILE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="DEBUG_FILE" /></root></configuration>
5.6.6. 日志写入 MongoDB
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。
5.6. Spring boot with Logging相关推荐
- 解决spring boot logging在两个目录生成日志文件且max-history不生效
解决spring boot logging在两个目录生成日志文件且max-history不生效 文章目录 解决spring boot logging在两个目录生成日志文件且max-history不生效 ...
- 【Spring Boot】Spring Boot Logging 示例 | 日志记录
文章目录 logging.level | 设置日志级别 logging.file | 指定输出日志文件的路径和名称 logging.path | 指定输出日志文件的路径 logging.pattern ...
- [转] Spring Boot特性
[From] http://blog.javachen.com/2015/03/13/some-spring-boot-features.html 1. SpringApplication Sprin ...
- Spring boot切换日志框架
切换日志框架 可以按照,SLF4J日志适配图,进行切换 slf4j+log4j 切换为,slf4j+log4j方式 <dependency><groupId>org.sprin ...
- Spring boot日志关系
新建项目 右击Diagrams--Show Dependencies 查看依赖关系 Ctrl+滚轮可以缩放 场景启动器 <dependency><groupId>org.spr ...
- spring boot 日志乱码_3. Spring Boot日志
3.1 日志框架分类和选择 市面上的日志框架 JCL.SLF4J,Jboss-logging.logback.log4j.log4j2.JUL .... 左边选一个门面(抽象层),右边来选一个实现 ? ...
- Spring Boot 2.0.0参考手册_中英文对照_Part IV_26
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 26. Logging Spring Boot uses Commons Logging for all inte ...
- Spring Boot 综合示例-整合thymeleaf、mybatis、shiro、logging、cache开发一个文章发布管理系统...
一.概述 经过HelloWorld示例(Spring Boot 快速入门(上)HelloWorld示例)( Spring Boot 快速入门 详解 HelloWorld示例详解)两篇的学习和练习,相 ...
- Spring Boot 日志集成 Logging 入门
摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Logging/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速入门 3. 动态修改日志级别 4. ...
最新文章
- ES不香吗,为啥还要ClickHouse?
- iphonex价格_iPhone12成10年内最受期待的苹果手机,但价格会狂涨
- 不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器
- 练习作品13:电子试卷自动生成软件
- Java基础——String类(一)
- python计算机中丢失api-ms-win-crt-runtime-l_api-ms-win-crt-runtime-l1-1-0.dll
- 华为P40系列发布时间或敲定:继续在3月26日亮相?
- 深入浅出 python epub_《机器学习从认知到实践(第2辑)(套装共3册,Python+TensorFlow)》epub+mobi+azw3...
- oracle+dg常用命令,DG 日常管理命令汇总
- sqoop入门到熟悉
- 搭建Hadoop集群(二)
- 修改QQ聊天窗口大小
- 【VMware】VMware Workstation 未能启动 VMware Authorization Service
- 以下对python程序缩进格式描述错误的是_转载 | python二级选择题与分析(8)
- seo和网站服务器有什么区别,SEO与竞价推广有什么不同?
- PDF文件太大了怎么办,如何压缩PDF且不改变清晰度
- 用MySQL绘制新年祝福图形_2020年春节,你有哪些与众不同的祝福语?
- 炒币机器人:币圈炒币是怎么亏钱的
- 如何设置对输入字段的关注?
- 打开CHM文件内部中文乱码问题的解决