日志输出
使用了spring-boot-starter
后,将添加spring-boot-starter-logging
依赖,此时Spring Boot将使用logback进行日志输出,默认只会输出INFO级别以上的日志信息,且只会输出到控制台。默认的日志格式是如下这样的。前面是日志输出时间,INFO
是日志级别,7496
是进程号,[ost-startStop-1]
是用[]
包起来的线程名,o.s.web.context.ContextLoader
是日志名称,接下来冒号后面的内容就是真正的日志信息。
2018-07-06 16:03:13.083 INFO 7496 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2954 ms
2018-07-06 16:03:13.255 INFO 7496 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
可以通过logging.pattern.dateformat
单独指定日志里面的日期输出格式,可以通过logging.pattern.level
单独指定日志中日志级别输出的格式。下面的代码中就分别指定了日期输出格式和日志级别的输出格式。
logging.pattern.dateformat=HH:mm:ss.sss
logging.pattern.level=custom-%5p
按照上面自定义的日期格式和日志级别输出格式后,输出的日志会是类似于下面这样的。
16:03:13.083 custom-INFO 7496 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2954 ms
16:03:13.255 custom-INFO 7496 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
也可以通过#logging.pattern.console
单独指定控制台的日志输出格式,通过#logging.pattern.file
指定输出到文件的日志格式。
#logging.pattern.console=console-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -%msg%n
#logging.pattern.file=file-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -%msg%n
指定日志输出文件
默认的日志信息只会输出到控制台,可以在application.properties
文件中通过logging.file
指定日志输出文件名。当不指定路径时,默认将在当前路径下创建日志文件。
logging.file=logback.log
指定logging.file
时也可以指定路径,如下则指定了日志内容将写入到/logs
目录下的logback.log
文件。
logging.file=/logs/logback.log
当不指定logging.file
时也可以通过logging.path
指定日志文件输出的路径,这样日志内容将写入到指定目录下的spring.log
文件。如下配置则表示日志内容将写入到/logs/spring.log
文件中。
logging.path=/logs
日志文件压缩
默认情况下每个日志文件写入10MB内容后将重新产生一个新的日志文件,然后将老的进行压缩,可以通过logging.file.max-size=20MB
指定每个日志文件最多写入20MB日志。默认情况下压缩的日志文件将不断产生,没有数量限制,可以通过logging.file.max-history
指定需要保留的历史日志文件数量。
调整日志级别
日志级别可以通过logging.level.logName=logLevel
的形式进行调整,其中根日志级别可以通过logging.level.root
进行调整。比如下面的代码就配置了根日志级别为WARN
,而com.elim
打头的日志级别为INFO
,org.springframework
打头的日志级别为DEBUG
。
logging.level.root=WARN
logging.level.com.elim=INFO
logging.level.org.springframework=DEBUG
自定义配置文件
Spring Boot也允许我们通过定义logback.xml
或logback-spring.xml
文件进行自定义的日志输出配置。Spring Boot建议我们定义日志输出文件为logback-spring.xml
,因为logback.xml
是logback的默认日志文件,会被logback自动加载,直接使用它时有些东西可能Spring Boot还没来得及初始化,并且使用logback.xml
不能使用Spring Boot添加的一些扩展。之后就可以在配置文件中按照logback的规范进行配置了,以下是一个简单的配置,只配置了控制台输出。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
扩展使用springProfile
在logback-spring.xml
中可以使用Spring Boot扩展的<springProfile/>
,它可以用在根元素<configuration/>
元素下的任何位置,用来包裹任何元素。<springProfile/>
用来定义在特定Profile被激活时将使用的特殊配置信息,比如下面的代码中就定义了当dev这个Profile被激活时将定义org.springframework
这个logger的输出级别为DEBUG。
<springProfile name="dev">
<logger name="org.springframework" level="DEBUG"/>
</springProfile>
扩展使用springProperty
在logback-spring.xml
中可以使用Spring Boot扩展的<springProperty/>
,使用它可以把在application.properties
中定义的属性值映射为logback环境中的一个属性,从而可以在logback的上下文使用。下面的配置中定义了属性appName
对应于Spring Boot的Environment中的app.name
(由source属性指定),当未指定时默认使用defaultValue属性指定的TEST
;属性logPath
对应于Spring Boot的Environment中的log.path
,未指定时使用/logs/${appName}.log
,其中的${appName}
又对应于变量appName
的值。定义好的变量可以在logback的配置文件中以${varName}
的形式进行引用。
<configuration>
<springProperty name="appName" source="app.name" defaultValue="TEST"/>
<springProperty name="logPath" source="log.path" defaultValue="/logs/${appName}.log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${appName}-%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
(注:本文基于Spring Boot 2.0.3所写)
相关推荐
在Spring Boot应用中,日志配置是一个至关重要的环节,因为它对于系统的监控、调试以及问题排查起着关键作用。本文将详细介绍如何在Spring Boot中配置日志系统,包括默认的日志系统、如何打印日志以及如何将日志信息...
Spring Boot也提供了强大的日志管理,我们可以使用`logging.level`配置来调整日志级别。 总之,Spring Boot为Java开发者提供了一个高效便捷的开发平台,而结合Dubbo可以构建大规模的分布式系统。理解并熟练运用...
标题 "spring boot admin server" 涉及的是Spring Boot生态中的一个强大工具——Spring Boot Admin。这个工具专门用于监控和管理Spring Boot应用,提供了一种可视化的方式来查看应用程序的状态、日志、健康检查等...
在Spring Boot框架中,`@DeclareParents`注解是AOP(面向切面编程)的一部分,主要用于实现动态代理。AOP允许我们在不修改原有代码的情况下,通过“切面”来增强或修改程序的行为,这对于日志记录、事务管理等横切...
4. 日志管理:Spring Boot默认集成Logback或Log4j2,通过配置控制日志级别和输出。 5. 安全控制:Spring Boot Security提供基础的安全管理,包括身份验证和授权,可轻松添加JWT token支持。 五、持续集成与部署 ...
《Spring开发指南——中文版》是由夏昕编著的一本针对Spring框架的中文教程,旨在帮助开发者更好地理解和应用Spring框架。Spring是Java平台上的一个核心框架,广泛应用于企业级应用开发,提供了一种全面的编程和配置...
- **日志格式**:介绍Spring Boot支持的日志格式。 - **控制台输出**: - **Color-coded输出**:解释如何启用颜色编码的日志输出。 - **文件输出**:说明如何将日志输出到文件。 - **日志级别**:列举了可用的日志...
日志系统在Spring Boot中也很重要,它默认集成了Logback或Log4j2,我们可以配置日志级别和输出格式,方便调试和问题排查。 此外,Spring Boot还提供了自动配置(Auto Configuration)特性,它会根据类路径下的jar包...
在Spring Boot中,我们可以通过实现`HandlerInterceptor`接口并重写其三个方法——`preHandle()`, `postHandle()`, 和 `afterCompletion()` 来创建自定义的拦截器。 `preHandle()` 方法在目标处理方法调用之前执行...
在本文中,我们将深入探讨这两个关键领域,并基于给出的"Spring学习心得(二)——日志和数据库"这个标题进行详细的阐述。 首先,让我们从日志开始。在Java应用程序中,日志系统扮演着调试、监控和问题排查的关键角色...
本压缩包包含的两本书籍——《SpringBoot揭秘》和《spring-boot-中文参考指南》,都是深入理解和掌握Spring Boot的重要资源。 《SpringBoot揭秘》一书主要涵盖了以下核心知识点: 1. **Spring Boot入门**:介绍...
本文档旨在指导读者通过具体步骤创建一个简单的Spring Boot Web应用程序——“Hello World!”示例。这个示例应用将帮助理解Spring Boot的一些核心特性,如自动配置、依赖管理和启动速度等。 #### 重要知识点 1. **...
2. **面向切面编程**:AOP是Spring框架的一大特色,它允许开发者将关注点分离,例如日志、事务管理等,可以作为“切面”独立处理,而不必在每个业务方法中重复编写。这样提高了代码的复用性和可读性。 3. **Spring ...
本教程聚焦于Spring Boot中的关键知识点,包括日志配置——Logback和Log4j2的使用,多环境配置的处理,以及Properties和YAML配置文件的解析,最后将探讨如何快速搭建一个RESTful API项目。以下是对这些内容的详细...
标题 "spring boot和mybatis入门" 涉及到的是两个关键的Java开发框架——Spring Boot和MyBatis。这两个框架在现代Java应用开发中占据了重要地位,特别是对于快速构建可部署的应用服务。 Spring Boot是Spring框架的...
在本教程系列——"Spring Boot教程系列(ImportNew)"中,我们将深入探讨Spring Boot的核心概念、优势及实际应用。 首先,Spring Boot的核心特性之一是“起步依赖”(Starter POMs)。这些预配置的Maven或Gradle...
5. 监控与日志:Spring Boot集成了Actuator,可以对应用性能进行监控,同时Spring Boot的日志管理方便了问题排查和系统优化。 四、LIMS系统核心模块 1. 样本管理:系统的核心功能,包括样本的登记、分类、编码、...
《基于Spring Boot的装饰工程管理系统详解》 在现代软件开发中,Spring Boot以其简洁的配置、快速的开发体验以及强大的生态系统,已经成为Java企业级应用的首选框架。本系统以"springboot176基于Spring Boot的装饰...
《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...
本项目是一个Java毕业设计,它基于Spring Boot框架构建了一个在线招标网站。这个系统的主要目标是为用户提供一个方便、高效且安全的平台,进行线上招标活动。让我们深入探讨一下这个项目涉及的技术栈和核心功能。 ...