一般的日志需求可以通过配置 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相关推荐

  1. 解决spring boot logging在两个目录生成日志文件且max-history不生效

    解决spring boot logging在两个目录生成日志文件且max-history不生效 文章目录 解决spring boot logging在两个目录生成日志文件且max-history不生效 ...

  2. 【Spring Boot】Spring Boot Logging 示例 | 日志记录

    文章目录 logging.level | 设置日志级别 logging.file | 指定输出日志文件的路径和名称 logging.path | 指定输出日志文件的路径 logging.pattern ...

  3. [转] Spring Boot特性

    [From] http://blog.javachen.com/2015/03/13/some-spring-boot-features.html 1. SpringApplication Sprin ...

  4. Spring boot切换日志框架

    切换日志框架 可以按照,SLF4J日志适配图,进行切换 slf4j+log4j 切换为,slf4j+log4j方式 <dependency><groupId>org.sprin ...

  5. Spring boot日志关系

    新建项目 右击Diagrams--Show Dependencies 查看依赖关系 Ctrl+滚轮可以缩放 场景启动器 <dependency><groupId>org.spr ...

  6. spring boot 日志乱码_3. Spring Boot日志

    3.1 日志框架分类和选择 市面上的日志框架 JCL.SLF4J,Jboss-logging.logback.log4j.log4j2.JUL .... 左边选一个门面(抽象层),右边来选一个实现 ? ...

  7. Spring Boot 2.0.0参考手册_中英文对照_Part IV_26

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 26. Logging Spring Boot uses Commons Logging for all inte ...

  8. Spring Boot 综合示例-整合thymeleaf、mybatis、shiro、logging、cache开发一个文章发布管理系统...

    一.概述 经过HelloWorld示例(Spring Boot 快速入门(上)HelloWorld示例)( Spring Boot  快速入门 详解 HelloWorld示例详解)两篇的学习和练习,相 ...

  9. Spring Boot 日志集成 Logging 入门

    摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Logging/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速入门 3. 动态修改日志级别 4. ...

最新文章

  1. ES不香吗,为啥还要ClickHouse?
  2. iphonex价格_iPhone12成10年内最受期待的苹果手机,但价格会狂涨
  3. 不使用任何框架,手写纯 JavaScript 实现上传本地文件到 ABAP 服务器
  4. 练习作品13:电子试卷自动生成软件
  5. Java基础——String类(一)
  6. python计算机中丢失api-ms-win-crt-runtime-l_api-ms-win-crt-runtime-l1-1-0.dll
  7. 华为P40系列发布时间或敲定:继续在3月26日亮相?
  8. 深入浅出 python epub_《机器学习从认知到实践(第2辑)(套装共3册,Python+TensorFlow)》epub+mobi+azw3...
  9. oracle+dg常用命令,DG 日常管理命令汇总
  10. sqoop入门到熟悉
  11. 搭建Hadoop集群(二)
  12. 修改QQ聊天窗口大小
  13. 【VMware】VMware Workstation 未能启动 VMware Authorization Service
  14. 以下对python程序缩进格式描述错误的是_转载 | python二级选择题与分析(8)
  15. seo和网站服务器有什么区别,SEO与竞价推广有什么不同?
  16. PDF文件太大了怎么办,如何压缩PDF且不改变清晰度
  17. 用MySQL绘制新年祝福图形_2020年春节,你有哪些与众不同的祝福语?
  18. 炒币机器人:币圈炒币是怎么亏钱的
  19. 如何设置对输入字段的关注?
  20. 打开CHM文件内部中文乱码问题的解决

热门文章

  1. 2016-8-9更新日志
  2. Yii学习笔记【2】
  3. 桌面虚拟化之呼叫中心语音应用
  4. FreeTextBox License机制的粗浅分析
  5. .NET Remoting中的通道注册
  6. java jni调用dll文件_Java通过jni调用动态链接库
  7. indesign如何画弧线_硬币画警车简笔画【图文+视频教程】
  8. php 添加行_php 多行数据同时插入
  9. ASP.NET MVC – 模型简介
  10. 有耐心就能学好Linux