日志对于开发来说是很重要的,可以通过日志判断问题出现的原因,但是日志过多或者无用的日志会影响问题定位,而且日志文件过大,影响服务器内存,所以对于一些不必要的日志不展示,还是很重要的,本文就是介绍Log日志级别及在项目中如何控制项目中不通过包名或者类日志的展示。
首先,先简单介绍一下日志级别,在软件开发过程中,日志是一种非常重要的调试和监控工具。日志级别是用来表示日志信息的重要程度和详细程度的。不同的日志级别具有不同的优先级,优先级高的日志级别会覆盖优先级低的日志级别。以下是常见的日志级别,从高到低排列:
以上日志级别从高到低:OFF > FATAL > ERROR > WARN > INFO.> DEBUG >.TRACE,日志输出的规则是,大于等于当前设置的日志等级的信息才会被输出,比如设置了INFO级别, ERROR 和 WARN也会被输出。
介绍完日志级别之后,接下来开始开始在项目中控制不同包名的日志级别展示。在使用Logback作为日志框架时,我们可以通过配置文件来指定不同包的日志级别。以下是一个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>
<logger name="com.qm.controller.sys" level="WARN"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
在这个示例中,我们为com.example.package1
和com.example.package2
分别设置了不同的日志级别。com.example.package1
的日志级别设置为INFO
,com.example.package2
的日志级别设置为DEBUG
。根日志级别设置为ERROR
。
其实主要是在root上面加需要单独限制日志级别的包,比如项目中com.qm.controller.sys这个包下面的所有类日志要求warn级别才展示。
<logger name="com.qm.controller.sys" level="warn"/>
在package com.qm.controller.sys这个包名下,选择其中一个类作为测试,比如在首页接口,输出多种级别的日志,观察我们设置了warn级别其他日志会展示吗?
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配置指定包日志级别的方法。通过设置不同包的日志级别,我们可以更好地控制日志输出,提高程序的可维护性和性能。在实际开发中,我们应该根据项目的需求和运行环境来选择合适的日志级别。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。