原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7613854.html

这是SpringBoot的日志内容

26 日志
  Spring使用CommonLogging作为内置日志记录工具,但也保留了底层日志的实现。默认的配置提供了Java Util Logging、Log4J2和LogBack。在不同情况下,可以通过预先的配置来选择控制台输出或者文件输出。
  默认情况下,如果你使用了SpringBoot的"Starters",将会使用LogBack作为日志工具。其拥有适当的回退路由,以确保Java Util Logging、Log4J2和Commons Logging的依赖库可以正常工作。
  注意:Java拥有许多的日志框架。如果上面的日志工具使你迷惑不堪,请不要担心。一般情况下,并不需要你更改日志依赖,SpringBoot也会工作的很好。
26.1 日志格式
  SpringBoot的默认日志输出如下:

2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

  以下项目将会被输出:

    • 日期和时间——毫秒级精度,易排序
    • 日志级别——ERROR、WARN、INFO、DEBUG、TRACE
    • 进程ID
    • ---——用于区分真正日志信息的分隔符
    • 线程名称——使用方括号括住(控制台输出时可能会被截断)
    • 日志名称——资源类名(通常是简化的)
    • 日志信息

  注意:LogBack工具并没有FATAL级别(这个级别会被映射到ERROR)
26.2 控制台输出
  采用默认的日志配置日志信息将会被输出到控制台。默认情况下ERROR、WARN和INFO级别的信息将会被记录显示。你也可以通过启动应用时添加--debug标签来开启debug模式。

$ java -jar muapp.jar --debug

  注意:你也可以在application.properties配置文件中添加debug=true来达到同样的目的。
  当使用debug模式时,核心记录器(包括内嵌容器、Hibernate和SpringBoot)被配置用来输出更多信息。debug模式下并不会配置你的应用来记录DEBUG级别的所有信息。
或者,你也可以通过类似的两种方法开启trace模式,这种模式将会输出核心记录器的跟踪日志。
26.2.1 着色输出
  如果你的终端支持ANSI,着色输出的日志信息讲可以提升阅读性。你可以设置spring.output.ansi.enabled为一个合适的值来覆盖自动的获取的值。
  颜色编码使用%clr来进行配置。在最简单的形式中,转换器将根据日志级别对输出进行着色,例如:

%clr(%5p)

  日志级别与着色的匹配关系如下:

Level (日志级别) Color(着色颜色)
FATAL  Red
ERROR  Red
WARN  Yellow
INFO  Green
DEBUG  Green
TRACE  Green

  另外,你也可以为转换器添加一个选项的方式来指定颜色或者样式,例如将文本输出设置为黄色:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

  下面是SpringBoot支持的颜色或者样式:

    • blue
    • cyan
    • faint
    • green
    • magenta
    • red
    • yellow

26.3 文件输出
  默认情况下,SpringBoot只会将日志输出到控制台,而不会输出到文件中。如果你想将日志不只输出到控制台,还是输出到文件中,你需要在application.properties文件中进行logging.file或者logging.path属性设置。
  下表中显示了logging.*属性如何一起来使用:

logging.file logging.path Example Description
(none) (none)   仅输出到控制台
指定文件 (none) my.log 输出到指定文件,名称可以是准确的位置,也可以是相对于当前目录的
(none) 指定目录 /var/log  将spring.log输出到指定目录,名称可以是准确的位置,也可以是相对于当前目录的

  表26.1 日志属性

  默认情况下,日志文件会记录控制台输出、ERROR、WARN和INFO级别的日志信息,并且在达到10M的时候重新创建文件来记录。
  注意:SpringBoot的日志系统在应用程序生命周期的早期就完成初始化,因此通过@PropertiesSource注解加载的配置文件中的属性将不会起到应有的作用(不生效)。
  注意:日志的属性与实际的日志基础结构无关。因此,指定的配置内容(就像LogBack的logback.configurationFile属性)并没有被SpringBoot所管理。
26.4 日志级别
  所有支持的日志系统都拥有在Spring Environment(环境就如SpringBoot中的application.properties)中使用logging.level.*=LEVEL的方式进行日志级别的配置,其中LEVEL可以是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF之一。根日志可以使用属性logging.level.root进行配置,例如:(在application.properties中)

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

  注意:默认情况下,SpringBoot会重定义Thymeleaf模板INFO信息,以使其可被DEBUG级别的日志所记录。这有助于减少标准日志输出中的乱象。有关如何在你的配置中重定义请参照LevelRemappingAppender。
26.5 自定义日志配置
  各类日志系统可被类路径下的适当的库所激活,然后被类根路径下的或者Spring环境中的logging.config属性所指定的路径下的适合的配置文件所自定义。
  你可以通过org.springframework.boot.logging.LoggingSystem系统属性来强制SpringBoot使用某一指定的日志系统。其值为实现LoggingSystem的完全限定名。你也可以为其设置为none来似的日志功能完全失效。
  注意:因为日志系统在ApplicationContext初始化之前就完成了初始化。所以无法通过@Configuration中的@PropertiesSources来控制日志系统。系统属性和SpringBoot的基本配置文件效用完好。
  基于你的日志系统,以下文件将会被加载:

Logging System Customization(自定义)
LogBack  logback-spring.xml;ogback-spring.groovy;logback.xml;logback.groovy
Log4j2  log4j2-spring.xml;log4j2.xml
JDK (Java Util Logging) logging.properties

  注意:如果可能,我们建议您使用- spring变量来配置日志配置(例如logBack-spring.xml而不是logBack.xml)如果你使用的以往的配置路径,Spring将不能完整的控制日志的初始化。
  注意:Java Util日志中有一些已知的类加载问题,这些问题在从“可执行jar”中运行时引起问题。我们建议你尽可能避免使用它。
  为了帮助定制,一些其他属性从Spring环境转移到系统属性:

Spring Environment  System Property Comments(说明)
logging.exception-conversion-word LOG_EXCEPTION_CONVERSION_WORD  记录异常时使用的转换词
logging.file LOG_FILE  在默认的日志配置中使用
logging.path LOG_PATH  在默认的日志配置中使用
logging.pattern.console CONSOLE_LOG_PATTERN  用于控制台日志输出的日志格式(仅支持默认的LogBack配置)
logging.pattern.file FILE_LOG_PATTERN  用于文件输出日志的日志格式(仅支持默认的额LogBack配置)
logging.pattern.level LOG_LEVEL_PATTERN  用于渲染日志级别的样式(默认为%5p)(仅支持默认的额LogBack配置)
PID  PID  当前进程ID(在可能的情况下发现并没有定义为系统环境变量)

  所有支持的日志系统都可以在解析其配置文件时查阅系统属性。例如spring-boot.jar中的默认配置。
  如果你想在一个日志属性中使用占位符,你需要使用SpringBoot的语法,而不是底层框架的语法。另外如果你在使用LogBack,你需要使用:来分隔一个属性和其默认值,而不是:-。
  通过覆盖LOG_LEVEL_PATTERN属性(或者LogBack中的logging.pattern.level属性),你可以在日志行中添加MDC(Mapped Diagnostic Context映射调试上下文:是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能)和ad-hoc(点对点)内容。例如:如果你使用logging.pattern.level=user:%X{user} %5p配置,则默认的日志输出格式将会包含一个名为user的MDC条目(当然需要存在才能显示)例如:

2015-09-30 12:30:04.031 user:juergen INFO 22174 --- [ nio-8080-exec-0] demo.Controller Handling authenticated request

26.6 LogBack扩展
  SpringBoot为LogBack提供了许多扩展属性用于高级配置。你可以在你的logback-spring.xml配置文件中使用这些属性。
  注意:由于logback.xml文件加载的过于早(早于SpringBoot应用的启动),所以你不能在其中使用这些扩展属性,你需要使用logBack-spring.xml文件或者logging.config属性。
  注意:这些扩展属性无法与LogBack的配置扫描器一起使用(无法被扫描到),如果你尝试这样做,你会得到类似于下面的这样的错误记录:

ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]

26.6.1 定制化的配置
  <springProfile>标签可用于在Spring配置文件中依据条件执行或者排除执行某些配置,其可用于<congfiguration>元素内的任何位置。使用name属性来指定那个配置切面可被执行。多个Profile可以使用以逗号分割的方式来指定。

 <springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile> <springProfile name="dev, staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile> <springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

26.6.2 环境属性
  <springProperty>标签可以允许你从Spring环境中提取属性来用于LogBack。这在你从application.properties中获取关于LogBack配置的属性的值时很有效。这个标签和LogBack的<properties>标签类似的方式工作,并不是直接制定一个值,而是指定属性的来源(source属性)。你可以使用scope属性来保存属性,否则只会把存在本地。如果你想要指定一个可靠的值,以防其未被配置,你可以使用defaultValue属性来指定一个默认值。

 <springProperty scope="context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
<remoteHost>${fluentHost}</remoteHost>
...
</appender>

  注意:source属性的值必须采用串的形式(例如:my.property.name)。然而可以使用轻松的规则将属性添加到环境中。

SpringBoot文档翻译系列——26.日志logging的更多相关文章

  1. SpringBoot基础系列-使用日志

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9996897.html SpringBoot基础系列-使用日志 概述 SpringBoot ...

  2. SpringBoot文档翻译系列——29.SQL数据源

    原创作品,可以转载,但是请标注出处地址: 因为需要使用到这方面内容,所有对这一部分进行了翻译. 29  使用SQL数据源 SpringBoot为SQL数据源提供了广泛支持,从直接使用JdbcTempl ...

  3. SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面

    前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...

  4. SpringBoot系列之日志框架使用教程

    目录 1.SpringBoot日志级别 1).日志级别简介 2).默认日志级别 3).配置日志级别 4).日志分组设置 2.SpringBoot日志格式设置 1).默认格式原理简介 2).默认日志格式 ...

  5. SpringBoot系列之日志框架介绍及其原理简介

    SpringBoot系列之日志框架介绍及其原理简介 1.常用日志框架简介 市面上常用日志框架:JUL.JCL.jboss-logging.logback.log4j.log4j2.slf4j.etc. ...

  6. SpringBoot入门系列(十二)统一日志收集

    前面介绍了Spring Boot 异常处理,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html. 今 ...

  7. SpringBoot起飞系列-日志使用(四)

    一.SpringBoot中的日志组件 日志是一个系统中不可缺少的组件.在项目中,我们常用的日志组件有JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.. ...

  8. 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图:   从上图我们可以 ...

  9. python 的日志logging模块

    1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message')logging.info('This is info messag ...

随机推荐

  1. [2014-02-23]Asp.net Mvc分布式Session存储方案

    要玩集群的时候,怎么处理会话状态Session? InProc模式的sessionState是不能用了,因为这是在web服务器本机进程里的,会造成各节点数据不一致.除非在分流的时候用ip hash策略 ...

  2. hibernate 基本配置文件及CRDU的操作和基本的HQL查询

    以下所有内容保存在 E:\JavaWebSrc\firstHibernate 目录中,项目名称为firstHibernate,使用IDEA打开,项目所需jar包在  F:\常用综合\常用jar包\hi ...

  3. 零基础如何一步一步开始搭建高性能直播平台?现以GitChat·架构来进行说明

    前言 现在直播已经成为移动互联网时代一个新的重要流量入口,从YY.斗鱼到花椒直播,直播已经成为人们分享交流的新方式,应用场景众多,主要分为: 金融类直播:金融直播可应用于实时解盘,在线专家讲座,专家在 ...

  4. Ubuntu 14.04 安装LNMP(nginx/1.12.1+php7.1.9+mysql5.7.19)环境

    这篇教程中,我们将讨论怎样在Ubuntu 14.04搭建LNMP环境 1 安装Nginx 首先我们要更新apt源 sudo add-apt-repository ppa:nginx/stable  s ...

  5. ionic3 自动创建启动背景splash以及图标icon

    在新建的项目文件夹下的 resources下就是我们放置图标以及启动背景图片的位置了. 如果现在我们想生成自己的图片的启动背景以及图片,我们需要把resources下的 icon.png 以及spla ...

  6. AJAX 处理xml 数据

    //这个方式返回的得是 xml标准的对象,可以返回 xml字符串,前端js 使用转为xml   function createXml(str){ if(document.all){//IE浏览器 va ...

  7. 团队作业4——第一次项目冲刺(Alpha版本)2st day

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 界面 1.四个用户登录界面已经完成. 2.界面内的功能完成了一小部分. 登陆部分 1.QQ授权已经申请,还未通过. 2.通过好 ...

  8. 201521123078《Java程序设计》第1周学习总结

    1. 本周学习总结 简单的了解JVM,JRE,JDK,编写简单的Java程序 2. 书面作业 为什么java程序可以跨平台运行?执行java程序的步骤是什么?(请用自己的语言书写) 通过JVM虚拟机, ...

  9. vbs文件共享变量与函数的方法

    参考资料: vbs能否像其他编程语言一样,把写好的代码打包成类库以供调用呢?经过搜索和实验,发现vbs文件之间可以互相调用并共享变量,这样我们就不用再反复地编写轮子了. 以下是一个调用实例: ==== ...

  10. Linux SDK之uClinux、Broadcom、Atheros、Realtek、Ralink、Marvell、Intel

    接触的Linux SDK越来越多,整理整理,分享分享,不求系统全面,对您有帮助便足矣 文中大部分是与AP/Router SoC解决方案(单芯片WIFI 路由器解决方案)相关的Linux SDK SDK ...