有个任务停留在任务列表中很久了:使用Appenders 完成 loger4j 的日志推送,始终没有成功实现。追其原因,仍然是官方的文档没有认真看。在spring-boot的项目中看到log4j,就想当然的认为Spring-boot使用的是log4j,然后不假思索的去google。最终导致的就是:功能没有实现,而且还浪费了很多不必要的时间,最后:还是老老实实的回来阅读spring-boot的官方文档。

本文主要对官方文档Logging部分进行解读。
原文地址:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html.

如果你使用的是不是最新版本,那么应该使用https://docs.spring.io/spring-boot/docs/版本号/reference/htmlsingle/#boot-features-logging

如:https://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#boot-features-logging

76 日志

在web开中,我们仅需要依赖于spring-boot-starter-web便自动启用了日志系统Logback

如果仅仅是想改变日志的等级,则可以直接使用logging.level前缀在application.properties中进行设置,比如:

logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

除了控制日志的等级外,还可以使用logging.file来定义日志输入到的文件位置。

如果我们还想配置更多选项,则可以在classpath(resourse)中定义logback.xmllogback-spring.xml

76.1 配置Logback

找到logback.xmllogback-spring.xml,复制以下基本内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml"/><logger name="org.springframework.web" level="DEBUG"/>
</configuration>

使用ideactrl+o来打开spring-boot jar中的base.xml,我们会看到配置信息包含一些特殊的字符,解读如下:

  • ${PID}当前的进程ID
  • ${LOG_FILE} 如果设置了logging.file,则使用logging.file做为日志输入文件。
  • ${LOG_PATH} 同上.指定日志输出路径。
  • ${LOG_EXCEPTION_CONVERSION_WORD} ..

我们自己定义日志输入的方式和字符串时,当然也可以使用它们了。

76.1.1 配置:将日志仅写入文件

如果我们想禁用控制台的日志输出(生产环境中,我们的确是要这么做的),然后把日志写入某个日志文件的话。那么需要新建logback-spring.xml,并引入file-appender.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/file-appender.xml" /><root level="INFO"><appender-ref ref="FILE" /></root>
</configuration>

然后:在application.properties定义logging.file来指定日志文件位置.
例:

logging.file=myapplication.log

再看看上面是怎么回事:打开org/springframework/boot/logging/logback/file-appender.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?><!--
File appender logback configuration provided for import, equivalent to the programmatic
initialization performed by Boot
--><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><triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender>
</included>

注意:这里面有个<appender name="FILE",指定了appender名称为FILE,对应logback-spring.xml的以下语句:

    <root level="INFO"><!--日志等级--><appender-ref ref="FILE" /><!--指定appender为FILE,则前面我们刚刚找到的name值--></root>

总结

有了以上内容,我们知道了如下知识点:

  1. spring-boot默认使用的是Logback而非log4j
  2. 我们可以单独建立logback-spring.xml来细化Logback的配置。
  3. Logback中,是可以指定使用不同的appender来定义日志的输出的。
  4. 是否可以自定义appender来达到将日志输出到我们的日志服务器,从而达到系统监控的目的呢?

解读:spring-boot logging。记一次Logback在spring-boot中的使用方法相关推荐

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

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

  2. Spring Boot Logging 配置

    Spring Boot 能够使用Logback, Log4J2 , java util logging 作为日志记录工具.Spring Boot 默认使用Logback作为日志记录工具.日志默认输出到 ...

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

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

  4. (10)Spring Boot修改端口号【从零开始学Spring Boot】

    Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...

  5. springboot日志写入mysql_44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】

    学院中有Spring Boot相关的课程!点击「阅读原文」进行查看! SpringSecurity5.0视频:http://t.cn/A6ZadMBe Sharding-JDBC分库分表实战: 在开发 ...

  6. 如何把Spring Boot 项目变成一个XML配置的Spring项目

    现在大家都追赶新的技术潮流,我来逆行一下. 其实Spring Boot 隐藏了大量的细节,有大量的默认配置,其实通过xml配置的方式也可以达到和Spring Boot一样的效果. Profile 在S ...

  7. 【Spring Boot官方文档原文理解翻译-持续更新中】

    [Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...

  8. 看完Spring源码记不住,是我脑子不太好吗?

    都说大厂面试必问源码,可很多人看完Spring源码记不住,是脑子有问题吗?当然不是!是因为你没有掌握学习源码的技巧. 看完源码的我- 我的朋友"路神"子路和"大魔王&qu ...

  9. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean  就是我们定义的bean无法进行注入,那到底是什 ...

最新文章

  1. 今天开始学C#.NET
  2. 封装(私有化成员变量,获取变量值)
  3. js使用location的方法实验
  4. 信息学奥赛一本通(1156:求π的值)
  5. 计算机磁盘分为硬盘和什么,fat32是什么?
  6. 2019年3月计算机ms二级考试题库,2019年3月全国计算机二级MSOffice章节练习题(2).doc...
  7. 18.外部相机校准——旋转(Rotation),R是什么样子的,绕Z轴旋转的例子,齐次坐标旋转_2
  8. python字符串最大长度_字符串String的最大长度
  9. jest单元测试-更多
  10. 开源三维地球Cesium中如何离线加载卫星影像和高程DEM数据
  11. python实现手写字识别_pytorch实现MNIST手写体识别
  12. 服务器维护合同需要交印花税吗,服务合同需要交印花税吗
  13. EXCEL如何将平均值加减标准差设置为科学计数法显示
  14. Incremental Graph Convolutional Network for Collaborative Filtering(阅读论文笔记)
  15. 建站百科|全网最全、最系统的域名申请教程,不看吃亏!!!
  16. 解决插入word文档中的图片变得不清晰问题
  17. 打造华丽QQ5.0侧滑效果
  18. 英语钻石法则(一)-----句子中心论
  19. OBS编译vs2019
  20. 信息管理概论(自考)

热门文章

  1. from __future__ import absolute_import, division, print_function
  2. 高通5G版图现身!你的网络生活将迎来巨变?
  3. AI 识别抑郁症正确率高达八成,但AI+精神健康还有很长的路要走
  4. 停电后程序员怎么写代码 | 每日趣闻
  5. 什么才是真正的程序员?
  6. 来了个假阿里? | 每日趣闻
  7. 学习BeetlSQL总结(2)——查询API,更新API
  8. 项目三(2)——抽象类
  9. Week 3 Quiz - Shallow Neural Networks
  10. day_06、面向对象