前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Log日志级别介绍及Logback配置指定包日志级别

Log日志级别介绍及Logback配置指定包日志级别

原创
作者头像
小明爱吃火锅
发布2024-04-26 10:29:01
2350
发布2024-04-26 10:29:01
举报
文章被收录于专栏:小明说Java小明说Java

前言

日志对于开发来说是很重要的,可以通过日志判断问题出现的原因,但是日志过多或者无用的日志会影响问题定位,而且日志文件过大,影响服务器内存,所以对于一些不必要的日志不展示,还是很重要的,本文就是介绍Log日志级别及在项目中如何控制项目中不通过包名或者类日志的展示。

Log日志级别介绍

首先,先简单介绍一下日志级别,在软件开发过程中,日志是一种非常重要的调试和监控工具。日志级别是用来表示日志信息的重要程度和详细程度的。不同的日志级别具有不同的优先级,优先级高的日志级别会覆盖优先级低的日志级别。以下是常见的日志级别,从高到低排列:

  • OFF:关闭所有日志记录。
  • FATAL:记录严重错误事件,这些事件可能导致程序中断。
  • ERROR:记录错误事件,但不会导致程序中断。
  • WARN:记录潜在有害的情况。
  • INFO:记录一般信息,用于描述程序运行过程中的关键事件。
  • DEBUG:记录详细的调试信息,用于诊断问题。
  • TRACE:记录最详细的调试信息,用于跟踪程序执行过程。

以上日志级别从高到低:OFF > FATAL > ERROR > WARN > INFO.> DEBUG >.TRACE,日志输出的规则是,大于等于当前设置的日志等级的信息才会被输出,比如设置了INFO级别, ERROR 和 WARN也会被输出。

Logback配置指定包日志级别

介绍完日志级别之后,接下来开始开始在项目中控制不同包名的日志级别展示。在使用Logback作为日志框架时,我们可以通过配置文件来指定不同包的日志级别。以下是一个Logback配置文件的示例,用于指定不同包的日志级别:

代码语言:xml
复制
<?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>

    <logger name="com.qm.controller.sys" level="WARN"/>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

在这个示例中,我们为com.example.package1com.example.package2分别设置了不同的日志级别。com.example.package1的日志级别设置为INFOcom.example.package2的日志级别设置为DEBUG。根日志级别设置为ERROR

其实主要是在root上面加需要单独限制日志级别的包,比如项目中com.qm.controller.sys这个包下面的所有类日志要求warn级别才展示。

代码语言:xml
复制
<logger name="com.qm.controller.sys" level="warn"/>

在package com.qm.controller.sys这个包名下,选择其中一个类作为测试,比如在首页接口,输出多种级别的日志,观察我们设置了warn级别其他日志会展示吗?

代码语言:java
复制

package com.qm.controller.sys;

@Slf4j
@RestController
@RequestMapping("/sys")
@Api(tags = "首页数据")
public class HomeController {
    @Resource
    private HomeService homeService;
    @Resource
    private HttpSessionService httpSessionService;

    @GetMapping("/home")
    @ApiOperation(value = "获取首页数据接口")
    public DataResult getHomeInfo() {
        //通过access_token拿userId
        String userId = httpSessionService.getCurrentUserId();
        DataResult result = DataResult.success();
        result.setData(homeService.getHomeInfo(userId));
        log.warn("warn级别 - 获取首页数据成功");
        log.info("info级别 - 获取首页数据成功");
        log.debug("debug级别 - 获取首页数据成功");
        return result;
    }
}

运行程序,发现日志只有warn级别 - 获取首页数据成功,说明配置成功。

总结

本文介绍了Log日志级别的概念和Logback配置指定包日志级别的方法。通过设置不同包的日志级别,我们可以更好地控制日志输出,提高程序的可维护性和性能。在实际开发中,我们应该根据项目的需求和运行环境来选择合适的日志级别。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Log日志级别介绍
  • Logback配置指定包日志级别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档