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

<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</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里面是什么东西

<included>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
</included>

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<appender name="TIME_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
<maxHistory>365</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="TIME_FILE" />
</root>
</configuration>

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

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

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

spring:
application:
name: spring-boot-logging logging:
file: ./logs/spring-boot-logging.log
level:
com.dragon.study.spring.boot: DEBUG

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

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

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

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

配置进行替代默认值

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

logging:
level:
com.dragon.study.spring.boot: OFF

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

logging:
file: ./logs/spring-boot-logging.log
level:
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. 3408: [Usaco2009 Oct]Heat Wave 热浪

    3408: [Usaco2009 Oct]Heat Wave 热浪 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 67  Solved: 55[Subm ...

  2. .NET的HTTP辅助类:RestSharp

    示例: var client = new RestClient("http://example.com");// client.Authenticator = new HttpBa ...

  3. 表格和echart二级联动,并通过点击echart高亮图标单元格

    html 部分 <!DOCTYPE html><html><head lang="en"> <meta charset="UTF ...

  4. fprintf&prinft&sprintf

    1: fprintf()#include <stdio.h> int fprintf( FILE *stream, const char *format, ... );fprintf()函 ...

  5. 在 sublime text 上添加 Package Control

    https://packagecontrol.io/installation 打开 View > Show Consolemenu 粘贴如下文本,回车 import urllib.request ...

  6. 提交任务到Spark

    1.场景 在搭建好Hadoop+Spark环境后,现准备在此环境上提交简单的任务到Spark进行计算并输出结果.搭建过程:http://www.cnblogs.com/zengxiaoliang/p/ ...

  7. javascript面向对象(一)

    javascript是弱类型,直译式的面相对象编程语言. 在之前我们说过 var a = 123: 在这里a是整数 但是我们可以给a重新复制为 a="你好"; 在这个过程中变量a ...

  8. jqzoom插件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...

  9. flask-mail发送QQ邮件代码示例(亲测可行)

    from flask import Flask from flask_mail import Mail, Message app = Flask(__name__) app.config.update ...

  10. IOS简单画板实现

    先上效果图 设计要求 1.画笔能设置大小.颜色 2.有清屏.撤销.橡皮擦.导入照片功能 3.能将绘好的画面保存到相册 实现思路 1.画笔的实现,我们可以通过监听用户的 平移手势 中创建 UIBezie ...