百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

一文带你搞懂SpringBoot日志如何配置?

off999 2025-01-21 20:36 38 浏览 0 评论

日志服务通常在产品设计的时候,不会被单独作为一个模块来说明,但是在很多系统架构中我们都会看到架构师在构建系统架构的时候,会将日志服务考虑在其中,当然,在现在这样的大数据背景下,很多的用户业务逻辑操作都是体现在日志中,例如在Nginx日志中可以看到请求接口访问情况,在MySQL的日志中可以分析出那些SQL执行的时间过长等等的。

那么既然这样,下面我们就来看看在Spring Boot中我们如何来处理业务日志吧?

这里需要说明 Spring Boot 的版本是 2.7.5 版本,不是最新版本,但原理都是一样。

日志级别

在讨论日志处理之前,首先我们先来了解一下什么是日志级别,常见的日志级别从低到高依次为 TRACE,DEBUG,INFO,WARN,ERROR,FATAL。

那么如何理解这个日志级别呢?一般来讲,我们在业务中处理中设置的日志级别都是INFO级别的日志,也就是说,当我们将日志设置成了INFO级别之后,比它级别更低的日志就看不到了,为什么这么做呢?

首先,日志分级别的话可以帮助开发者能够快速的定位到一些程序中出现的问题。不同级别的问题也就是代表着问题的严重性。

其次,在开发中不可能我们将所有的日志都进行收集,我们可以通过设置日志级别来排除一些在正常运行过程中其实不是那么重要的日志。

第三,通过日志的采集和分析,能够帮助我们监控应用程序的运行状态。

当然了在实际开发中日志级别的控制还可以用来做很多很多的事情,这里是笔者认为的日志分级别的几个关键点。

常见的日志框架

在日常开发中,常用到的日志框架有Log4j、LogBack、Log4j2。当然还有一些老的框架中还有一些其他的日志框架。

在这些框架中,可能听过最多的就是Log4j了吧,因为在Spring开发中我们会经常性的听到这个框架,而在Spring Boot中默认使用的是LogBack。

LogBack这个框架是基于Log4j框架开发出来的另一个开源的日志框架,与LogBack相比,性能不知道提升了多少倍,并且LogBack初始化加载的内存也变小了,或许这也是Spring Boot将其作为默认的日志框架的原因之一吧。

而Log4j2 是要比LogBack出现要晚,据官网的介绍,性能要比LogBack要更好,但是具体咱也没试过,所以这个就不需要再纠结了。因为日志框架太多了,那么如何找到一款适合项目的日志框架才是关键。下面我们就先来研究一下Spring Boot默认日志框架LogBack。

Spring Boot的默认日志框架

在上文中我们介绍了在SpringBoot中的默认的日志框架是LogBack,既然能够作为Spring Boot的默认日志框架,那么在实际的性能上,一定是经过了认证的研究的。所以在一般的开发过程中,建议先不要更换。

实际上,在Spring Boot应用创建好之后,框架就默认的将日志的相关引用也给加进去了,这就是Spring Boot的自动化配置所带来的高效之处,想想在Spring项目中还需要自己去配置依赖,引用日志组件等操作,Spring Boot框架确实是提供了很多便捷的操作。

在我们启动了Spring Boot项目之后,默认日志的级别是INFO,并且我们可以在日志中看到如下的一些内容。

  • 日志时间,精确到了毫秒级别
  • 日志级别,默认是INFO
  • 进程ID
  • 打印了日志分隔符
  • 线程名称
  • Logger的名称
  • 具体的日志内容

如何在代码中去使用日志呢?

首先在代码中添加日志,第一个目的就是为了能够追溯到业务操作流程相关信息,例如在一个IF条件判断的时候,在异常捕获的时候,都是为了能够更好的帮助我们定位问题,解决问题。那么我们如何在代码中添加日志操作呢?

在代码中添加日志操作的方式,一般来说有两种,一种是代码的方式,一种是通过Lombok注解的方式。

代码的方式

可以在业务逻辑代码中添加如下的内容。

private final Logger logger  = LoggerFactory.getLogger(TestController.class);

通过Lombok方式

想要在项目中使用Lombok,就需要先添加Lombok的相关依赖。如下所示,当然对于Lombok在开发过程中使用者对于它的评价是褒贬不一的。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

添加完成依赖之后,就可以通过如下的方式来使用日志了。

@RestController
@Slf4j
public class TestController {   
    @GetMapping("/test")
    public String test(){
        log.info("这个是一个INFO级别的日志");
        return "Hello World!";
    }
}

看上去非常简单。使用起来也是非常方便。

如何调整日志级别呢?

既然Spring Boot提供了自动配置,那么就一定提供了日志级别的修改方式,我们可以通过如下的配置来调整SpringBoot应用的默认日志级别。

logging:
 level:
   root:DEBUG

如图所示,在我们输入调整日志级别之后,在配置文件中有如下的提示。也就是说,我们可以将整个项目的级别给设置成DEBUG级别,或者是我们可以将某个模块设置成对应的级别。

  • root:表示整个项目的日志级别
  • sql:数据库操作的日志级别
  • web:Web层日志操作级别
  • 其他包名,就是包名下的内容日志操作级别

我们可以根据自己的需要来为不同的包,不同的模块来设置合适的日志级别。

如何修改日志输出文件?

在Spring Boot中日志默认是输出到控制台中的,显然这种方式在生产环境中是不被允许的,所以我们需要去配置日志的输出路径。如下所示。

logging:
  level:
    root: debug
  file:
    path: ./log/
    name: spring.log

可以通过logging.file.path和loggin.file.name两个属性来配置,但是根据官网的文档介绍,这两个属性,我们只需要配置一个即可,否则是不生效的。

如何指定日志格式?

在默认情况下的日志格式,在项目启动的时候,就看到了。那么我们如何能够定制一下属于我们自己的日志格式呢?可以通过如下的两个属性来设置

  • logging.pattern.console:设置控制台日志格式
  • logging.pattern.file:设置日志文件中输出格式
logging:
  pattern:
    console: %d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
    file: %d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n

其中

  • yyyy/MM/dd-HH:mm:ss 表示日志输出的时间格式
  • thread 表示进程名称
  • 5level 表示日志级别
  • logger 日志输出者的名称
  • msg 日志消息
  • %n 换行符

如何自定义日志配置呢?

在Spring Boot 官方文档中,给出了根据不同的日志组件来设置不同的日志配置。例如我们默认使用的是LogBack,那么我们需要在resource目录下创建一个logback.xml的日志配置文件,就可以进行自定义的日志配置了。如图所示。

当然官方文档中还给出了其他的日志系统对应的配置文件的写法。

  • Logback:logback-spring.xml, logback.xml
  • Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
  • Log4j2:log4j2-spring.xml, log4j2.xml
  • JDK(Java Util Logging): logging.properties

当然既然是官方推荐,那么就以Logback为主,这个时候,我们就可以在这个Logback.xml文件中开始编写自己的日志配置方式了,如下图所示。由于篇幅有限,这里就不粘贴具体的源码信息了。有兴趣的读者可以自己查阅相关资料进行配置。

总结

到这里Spring Boot日志操作相关内容就介绍完了,那么在最后我们介绍了关于如何自定义日志配置,可以通过logback.xml的方式进行配置,由于篇幅有限,没有做过多的介绍,想了解原理的读者,可以自己查阅相关资料,或者是可以留言大家一起讨论。

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: