Spring Boot(08)——日志输出

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

日志输出

使用了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所写)

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
309 1
日志收集和Spring 微服务监控的最佳实践
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
535 5
|
8月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2121 1
|
8月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1006 0
|
8月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
800 0
|
8月前
|
Java API 开发者
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——slf4j 介绍
在软件开发中,`System.out.println()`常被用于打印信息,但大量使用会增加资源消耗。实际项目推荐使用slf4j结合logback输出日志,效率更高。Slf4j(Simple Logging Facade for Java)是一个日志门面,允许开发者通过统一方式记录日志,无需关心具体日志系统。它支持灵活切换日志实现(如log4j或logback),且具备简洁占位符和日志级别判断等优势。阿里巴巴《Java开发手册》强制要求使用slf4j,以保证日志处理方式的统一性和维护性。使用时只需通过`LoggerFactory`创建日志实例即可。
623 0
|
4月前
|
机器学习/深度学习 XML Java
【spring boot logback】日志logback格式解析
在 Spring Boot 中,Logback 是默认的日志框架,它支持灵活的日志格式配置。通过配置 logback.xml 文件,可以定义日志的输出格式、日志级别、日志文件路径等。
768 5
|
8月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
351 0
|
Java Spring
spring 普通日志配置文件
spring 普通日志配置文件
141 0
|
监控 Java Spring
【spring boot logback】日志颜色渲染,使用logback-spring.xml自定义的配置文件后,日志没有颜色了
接着spring boot日志logback解析之后,发现使用logback-spring.xml自定义的配置文件后,日志没有颜色了   怎么办? 官网处理日志链接:https://logback.qos.
5713 0

热门文章

最新文章