spring-boot默认使用logback来记录logger,spring-boot的包里面org.springframework.boot.logging.logback路径下面有一些配置文件,默认的情况下会使用base.xml,它把日志输出到控制台和文件之中。它的内容是:

  1. <included>
  2. <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  3. <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
  4. <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
  5. <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
  6. <root level="INFO">
  7. <appender-ref ref="CONSOLE" />
  8. <appender-ref ref="FILE" />
  9. </root>
  10. </included>

对于输出到文件,如果设置了logging.file就使用该值作为文件名称,如果设置了logging.path就使用logging.path/spring.log作为文件名称,如果都没有设置就放入临时文件中。

那么问题来了,如果要写入文件的话,一个文件不会被写得很大吗?
这个时候就可以看base.xml里面includeorg/springframework/boot/logging/logback/file-appender.xml

我们来看看org/springframework/boot/logging/logback/file-appender.xml里面是什么东西

  1. <included>
  2. <appender name="FILE"
  3. class="ch.qos.logback.core.rolling.RollingFileAppender">
  4. <encoder>
  5. <pattern>${FILE_LOG_PATTERN}</pattern>
  6. </encoder>
  7. <file>${LOG_FILE}</file>
  8. <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
  9. <fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
  10. </rollingPolicy>
  11. <triggeringPolicy
  12. class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  13. <MaxFileSize>10MB</MaxFileSize>
  14. </triggeringPolicy>
  15. </appender>
  16. </included>

是的,默认的配置里面有个SizeBasedTriggeringPolicy来表示文件的大小,每个文件到了10MB的时候就会重新开启一个文件,并且把之前的名称命名成${LOG_FILE}.%i,这样就解决了日志文件过大的问题。

有人可能想问,这些都是默认的配置,如果我不想使用默认的配置,我想按照天来切割日志,应该如何设置呢?

可以在resources目录下面创建一个logback-spring.xml的文件,并且给出自己想要的配置,这里给一个简单的配置是的日志文件可以按天为单位来切割日志文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  4. <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
  5. <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
  6. <appender name="TIME_FILE"
  7. class="ch.qos.logback.core.rolling.RollingFileAppender">
  8. <encoder>
  9. <pattern>${FILE_LOG_PATTERN}</pattern>
  10. </encoder>
  11. <file>${LOG_FILE}</file>
  12. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  13. <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
  14. <maxHistory>365</maxHistory>
  15. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  16. <maxFileSize>100MB</maxFileSize>
  17. </timeBasedFileNamingAndTriggeringPolicy>
  18. </rollingPolicy>
  19. </appender>
  20. <root level="INFO">
  21. <appender-ref ref="CONSOLE" />
  22. <appender-ref ref="TIME_FILE" />
  23. </root>
  24. </configuration>

上面%d{yyyy-MM-dd}表示命名的文件名字以原始的名字后面加上日期作为后缀,<maxFileSize>100MB</maxFileSize>表示每个文件大小为100MB。这样日志文件就会以日期来进行切割并且进行保存了。

所以说如果要自定义日志的格式, 就可以通过自己编写logback-spring.xml这个文件来自己定义了。

最后在配置文件appication.yaml设置好文件名称和日志级别就可以了

  1. spring:
  2. application:
  3. name: spring-boot-logging
  4. logging:
  5. file: ./logs/spring-boot-logging.log
  6. level:
  7. com.dragon.study.spring.boot: DEBUG

如果需要在logback-spring.xml自定义一些配置文件,可以使用

  1. <springProperty scope="context" name="SYSLOG_HOST" source="logging.syslog.host" defaultValue="syslog.hostname" />
  2. <springProperty scope="context" name="SYSLOG_FACILITY" source="logging.syslog.facility" defaultValue="LOCAL7"/>
  3. <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
  4. <syslogHost>${SYSLOG_HOST}</syslogHost>
  5. <facility>${SYSLOG_FACILITY}</facility>
  6. </appender>

然后在appication.yaml的配置文件中加入

  1. logging.syslog.facility: syslog.change.hostname
  2. logging.syslog.facility: LOCAL1

配置进行替代默认值

PS: 遇到一个坑, 就是想关掉某个包下面的日志,不能直接

  1. logging:
  2. level:
  3. com.dragon.study.spring.boot: OFF

因为OFF是yaml的关键字,上面那么写没有任何作用
所以如果想关掉某个包下面的日志的正确方法是 OFF上面加上单引号

  1. logging:
  2. file: ./logs/spring-boot-logging.log
  3. level:
  4. com.dragon.study.spring.boot: 'OFF'

最后如果觉得所讲的东西能够帮助到你,并且希望进行更详细的深入的学习,欢迎加群632109190进行讨论和学习。

设置spring-boot的logging的更多相关文章

  1. spring boot添加logging不能启动且不报错

    1.问题: application.yml中添加logging启动失败,不报错,去除后又正常 logging: config: classpath:test-logback-spring.xml报错 ...

  2. Spring Boot 设置静态资源访问

    问题描述 当使用spring Boot来架设服务系统时,有时候也需要用到前端页面,当然就不可或缺地需要访问其他一些静态资源,比如图片.css.js等文件.那么如何设置Spring Boot网站可以访问 ...

  3. Spring Boot Admin 的使用 2

    http://blog.csdn.net/kinginblue/article/details/52132113 ******************************************* ...

  4. Spring Boot特性(转)

    摘要: 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringA ...

  5. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  6. Spring Boot 之日志记录

    Spring Boot 之日志记录 Spring Boot 支持集成 Java 世界主流的日志库. 如果对于 Java 日志库不熟悉,可以参考:细说 Java 主流日志工具库 关键词: log4j, ...

  7. spring boot mybatis sql打印到控制台

    如何设置spring boot集成 mybatis 然后sql语句打印到控制台,方便调试: 设置方法: 在application.properties文件中添加: logging.level.com. ...

  8. Spring boot初入门

    1. Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.1. @Configuration 和 @Bean Spring的Java配置方式是 ...

  9. Spring Boot 官方文档学习(二)特点

    一.SpringApplication banner,就是启动时输出的信息,可以在classpath下添加 banner.txt,或者设置 banner.location 来指向特定的文件.(默认编码 ...

  10. 【转】Spring Boot特性

    https://yq.aliyun.com/articles/25530 摘要: 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的 ...

随机推荐

  1. Asp.Net Core Authentication Middleware And Generate Token

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  2. CDIF: 基于JSON的SOA软件框架

    通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...

  3. Ionic2 开发笔记(1)ionic2 +angular2搭建

    1.去node.js官网下载对应版本https://nodejs.org/en/(不会请看OnsenUi搭载,里面有详细过程) 2.然后通过npm下载Ionic和cordova $ npm insta ...

  4. 变量 || 基本数据类型 || if、while语句

    变量名:只能由数字.字母.下划线组成且不能以数字开头:变量名不可以是python内部的关键字   基本数据类型:数字.字符串.布尔值(True/False)   [if条件语句] if 条件:     ...

  5. wemall app商城源码Android之支付宝接口公用函数

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之  ...

  6. View 的measure 和onMeasure

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #454545 } p.p2 ...

  7. 【转】SDWebImage实现分析

    该博文来自南峰子的技术博客,文章从下载和缓存俩个大的组件分析到里面一些核心方法的实现,条理清晰,相对于一些一上来就通篇分析实现思路的技术文章, 这篇的讲解思路明确,框架架构也讲的比较清楚.看完这篇再去 ...

  8. macaca环境搭建(web 和 android)

    一.安装配置JDK 1.1下载JDK地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...

  9. CSS.04 -- 浮动float、overflow、定位position、CSS初始化

    标准流:行内/行内块元素横向有序排列 : 块元素纵向有序排列. 浮动:Float 语法:float:left/right :  设置浮动的元素,脱离标准流 浮动的框可以向左或向右移动,直到它的外边缘碰 ...

  10. nginx浏览目录

    [root@localhost domains]# vi web.jd.com location / proxy_set_header X-Forwarded-For $proxy_add_x_for ...