博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SpringBoot应用中使用Logback输出日志
阅读量:6836 次
发布时间:2019-06-26

本文共 3793 字,大约阅读时间需要 12 分钟。

对于开发而言,日志非常重要,有效的输出日志,可以极大的帮助定位问题,特别是定位线上问题。

1 SpringBoot对Logback的支持

SpringBoot支持Java Util LoggingLog4J2Logback等多种日志实现。默认情况下,使用Logback。所以,开发中,可以容易集成Logback,并且SpringBoot提供了一些默认的配置,可以很方便的将日志输出到控制台或者文件中。

使用Starter[spring-boot-starter-web]创建一个SpringBoot应用,创建一个maven项目,在pom.xml中添加依赖:

4.0.0
com.spingboot.one
logback-demo
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
复制代码

然后,创建包com.springboot.one,并在该包下创建主类Application.java

package com.springboot.one;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}复制代码

启动后,就可以在控制台看到输出的日志:

2018-08-15 22:26:08.731  INFO 3820 --- [           main] com.springboot.one.Application           : No active profile set, falling back to default profiles: default2018-08-15 22:26:09.119  INFO 3820 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1b083826: startup date [Wed Aug 15 22:26:09 CST 2018]; root of context hierarchy2018-08-15 22:26:12.792  INFO 3820 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)2018-08-15 22:26:12.830  INFO 3820 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]复制代码

以上,可以清晰的看到日志的时间,级别,线程等信息。

2 配置Logback

在SpringBoot应用中,有两种方式配置日志:

  1. application.properties中进行配置
  2. 使用单独的logback配置文件

这两种方式都可以对Logback进行相关的配置,两个方式各有优劣,但是,实际开发中,比较推荐使用第二种方式进行配置,主要有以下优点:

  • 与其它配置分离,日志配置集中于此文件中
  • 配置比较灵活

2.1 将日志输出到控制台

接下来,在项目中,添加单独的logback配置文件:logbackd-emo\src\main\resources\logback-spring.xml,注意配置文件的名称为logback-spring.xml,遵循这个约定,SpringBoot会默认加载该配置文件。

复制代码

以上,通过配置将日志输出到控制台,将日志级别调成DEBUG级别,这里直接引用了SpringBoot内置的配置文件,当然这个也可以根据自己的需求重新配置。

2.2 将日志输出到文件

也可以将日志输出到指定的文件中,这里可以直接引用SpringBoot内置的配置文件:

复制代码

不过,这个配置文件功能过于简单,通常,在项目中都会自定义,比如,像这样:

${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}.log
30
${FILE_LOG_PATTERN}
复制代码

将日志输出文件,需要考虑更多内容:

  • 日志文件的路径,在生产环境中,可能需要单独的分区。
  • 日志文件的命名规则,使用日期命名可以方便查找。
  • 日志的滚动策略,如果日志量不大,可以按天切割日志。

同时,在该配置中还对一些日志进行了级别的调整,减少无用的日志,对于定位问题非常重要。

3 根据环境加载日志配置

上述的的内容基本都是Logback的相关配置,SpringBoot对于日志配置还做了一些特殊的扩展,其中,有一个功能就特别有用,就是在日志配置中支持Profile特性,通过Profile就可以很容易实现根据环境加载日志配置。

比如,当前有三个环境,日志的输出要求各不相同:

  • 生产环境:输出到文件
  • 开发环境:输出到控制台
  • 测试环境:输出到文件

那现在就可以这样配置:

复制代码

然后,在application.properties中进行Profile的配置:

spring.profiles.active=prod复制代码

此时,就是运行在生产环境,日志就会输出到文件中。

4 小结

本文主要介绍了如何在SpringBoot中使用Logback输出日志,并且,还介绍了一个实用的技巧,就是如何根据环境加载日志配置。不过,实际的开发中,这些还远远不够,还有很多问题需要解决,比如:

  1. 如何收集多台服务器的日志
  2. 如何有效的存储日志
  3. 如何方便高效的查询日志

后续,会继续介绍更多的日志收集方案。关注我:

转载地址:http://mgqkl.baihongyu.com/

你可能感兴趣的文章
Axure RP9 自学之路2-基础操作篇
查看>>
GMS(cts、gsi、vts、gts、ctsv)问题总结
查看>>
runtime 关联对象objc_setAssociatedObject
查看>>
比较某两个时间的时间戳相等
查看>>
外墙清洗这件事,到底怎样才算安全?
查看>>
java B2B2C Springcloud多租户电子商城系统-spring-cloud-eureka
查看>>
11月29日云栖精选夜读:阿里传奇工程师多隆的程序世界
查看>>
推荐一些学习软件编程的网站
查看>>
Throwable
查看>>
三栏布局 五中解决方式
查看>>
ES6手册
查看>>
Go学习之-用vscode写go代码遇到的问题
查看>>
Django搭建个人博客:渲染Markdown文章目录
查看>>
菜鸟成长之路05/06/07
查看>>
Android 动画之属性动画
查看>>
Android 哥哥福利
查看>>
推荐一些工具类网站
查看>>
Visual Paradigm 教程[UML]:如何在序列图中应用消息编号?
查看>>
iOS自定义简易刷新视图(仿MJRefresh)
查看>>
你需要知道的Android View的布局
查看>>