`
234390216
  • 浏览: 10237800 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462834
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775894
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398687
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395130
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:680144
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:531107
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1184883
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:468626
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151477
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68320
社区版块
存档分类
最新评论

Spring Boot(08)——日志输出

阅读更多

日志输出

使用了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打头的日志级别为INFOorg.springframework打头的日志级别为DEBUG

logging.level.root=WARN
logging.level.com.elim=INFO
logging.level.org.springframework=DEBUG

自定义配置文件

Spring Boot也允许我们通过定义logback.xmllogback-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所写)

0
0
分享到:
评论

相关推荐

    Spring Boot系列——日志配置.docx

    在Spring Boot应用中,日志配置是一个至关重要的环节,因为它对于系统的监控、调试以及问题排查起着关键作用。本文将详细介绍如何在Spring Boot中配置日志系统,包括默认的日志系统、如何打印日志以及如何将日志信息...

    Spring Boot课件1 —— 创建和运行Spring Boot项目

    Spring Boot也提供了强大的日志管理,我们可以使用`logging.level`配置来调整日志级别。 总之,Spring Boot为Java开发者提供了一个高效便捷的开发平台,而结合Dubbo可以构建大规模的分布式系统。理解并熟练运用...

    spring boot admin server

    标题 "spring boot admin server" 涉及的是Spring Boot生态中的一个强大工具——Spring Boot Admin。这个工具专门用于监控和管理Spring Boot应用,提供了一种可视化的方式来查看应用程序的状态、日志、健康检查等...

    Spring boot——@DeclareParents例子

    在Spring Boot框架中,`@DeclareParents`注解是AOP(面向切面编程)的一部分,主要用于实现动态代理。AOP允许我们在不修改原有代码的情况下,通过“切面”来增强或修改程序的行为,这对于日志记录、事务管理等横切...

    Spring-Boot-demo

    4. 日志管理:Spring Boot默认集成Logback或Log4j2,通过配置控制日志级别和输出。 5. 安全控制:Spring Boot Security提供基础的安全管理,包括身份验证和授权,可轻松添加JWT token支持。 五、持续集成与部署 ...

    Spring开发指南——中文版

    《Spring开发指南——中文版》是由夏昕编著的一本针对Spring框架的中文教程,旨在帮助开发者更好地理解和应用Spring框架。Spring是Java平台上的一个核心框架,广泛应用于企业级应用开发,提供了一种全面的编程和配置...

    Spring Boot参考指南.pdf

    - **日志格式**:介绍Spring Boot支持的日志格式。 - **控制台输出**: - **Color-coded输出**:解释如何启用颜色编码的日志输出。 - **文件输出**:说明如何将日志输出到文件。 - **日志级别**:列举了可用的日志...

    spring-boot-demo

    日志系统在Spring Boot中也很重要,它默认集成了Logback或Log4j2,我们可以配置日志级别和输出格式,方便调试和问题排查。 此外,Spring Boot还提供了自动配置(Auto Configuration)特性,它会根据类路径下的jar包...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    在Spring Boot中,我们可以通过实现`HandlerInterceptor`接口并重写其三个方法——`preHandle()`, `postHandle()`, 和 `afterCompletion()` 来创建自定义的拦截器。 `preHandle()` 方法在目标处理方法调用之前执行...

    Spring学习心得(二)——日志和数据库

    在本文中,我们将深入探讨这两个关键领域,并基于给出的"Spring学习心得(二)——日志和数据库"这个标题进行详细的阐述。 首先,让我们从日志开始。在Java应用程序中,日志系统扮演着调试、监控和问题排查的关键角色...

    spring boot相关书籍

    本压缩包包含的两本书籍——《SpringBoot揭秘》和《spring-boot-中文参考指南》,都是深入理解和掌握Spring Boot的重要资源。 《SpringBoot揭秘》一书主要涵盖了以下核心知识点: 1. **Spring Boot入门**:介绍...

    生成一个简单的Spring Boot应用程序.pdf

    本文档旨在指导读者通过具体步骤创建一个简单的Spring Boot Web应用程序——“Hello World!”示例。这个示例应用将帮助理解Spring Boot的一些核心特性,如自动配置、依赖管理和启动速度等。 #### 重要知识点 1. **...

    JavaEE精讲之Spring框架实战 ——学习笔记.zip

    2. **面向切面编程**:AOP是Spring框架的一大特色,它允许开发者将关注点分离,例如日志、事务管理等,可以作为“切面”独立处理,而不必在每个业务方法中重复编写。这样提高了代码的复用性和可读性。 3. **Spring ...

    Spring Boot教程:课件.rar

    本教程聚焦于Spring Boot中的关键知识点,包括日志配置——Logback和Log4j2的使用,多环境配置的处理,以及Properties和YAML配置文件的解析,最后将探讨如何快速搭建一个RESTful API项目。以下是对这些内容的详细...

    spring boot和mybatis入门

    标题 "spring boot和mybatis入门" 涉及到的是两个关键的Java开发框架——Spring Boot和MyBatis。这两个框架在现代Java应用开发中占据了重要地位,特别是对于快速构建可部署的应用服务。 Spring Boot是Spring框架的...

    Spring Boot教程系列(ImportNew ).rar

    在本教程系列——"Spring Boot教程系列(ImportNew)"中,我们将深入探讨Spring Boot的核心概念、优势及实际应用。 首先,Spring Boot的核心特性之一是“起步依赖”(Starter POMs)。这些预配置的Maven或Gradle...

    基于Java+Spring Boot实现的样本库实验室管理系统LIMS源码

    5. 监控与日志:Spring Boot集成了Actuator,可以对应用性能进行监控,同时Spring Boot的日志管理方便了问题排查和系统优化。 四、LIMS系统核心模块 1. 样本管理:系统的核心功能,包括样本的登记、分类、编码、...

    springboot176基于Spring Boot的装饰工程管理系统.zip

    《基于Spring Boot的装饰工程管理系统详解》 在现代软件开发中,Spring Boot以其简洁的配置、快速的开发体验以及强大的生态系统,已经成为Java企业级应用的首选框架。本系统以"springboot176基于Spring Boot的装饰...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制...

    Java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).7z

    本项目是一个Java毕业设计,它基于Spring Boot框架构建了一个在线招标网站。这个系统的主要目标是为用户提供一个方便、高效且安全的平台,进行线上招标活动。让我们深入探讨一下这个项目涉及的技术栈和核心功能。 ...

Global site tag (gtag.js) - Google Analytics