springboot 集成 log4j,log4j配置不同包不同日志输出级别(按包输出不同级别日志)
1. POM文件配置
<!--排除springboot默认的logback依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring.version}</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!--引入springboot-log4j starter依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j</artifactId><version>1.3.8.RELEASE</version>
</dependency>
2.log4j.propertie 文件配置
log4j.rootLogger=INFO, Appender1, Appender2log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%nlog4j.appender.Appender2=org.apache.log4j.FileAppender
log4j.appender.Appender2.File=test-log0712.log
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n
配置文件各项说明请见 log4j配置项说明
3. 代码应用
这时候我们启动项目,控制台就会出现以下日志:
我们发现,控制台只输出了 info 级别的日志,这是因为我们在 log4j.properties 配置文件中配置了
log4j.rootLogger=INFO, Appender1, Appender2
其中,INFO 就代表了日志输出级别,那我们将此项改成
log4j.rootLogger=DEBUG, Appender1, Appender2
再次运行程序,控制台输出如下:
我们发现,虽然我们打印的 info 和 debug 级别的日志均输出了,但是随之而来的还有一大堆框架里的dubug日志,这会非常影响我们的开发效率,所以我们需要根据不同的包配置不同的日志输出级别,例如Spring框架的日志,我们就输出 info或者 error 级别的日志,我们自己开发的代码,在调试的时候就输出 debug 级别的日志。那么该如何配置呢?
在 log4j.properties 配置文件中:
# rootLogger 我们可以理解成根日志,如果没有单独配置其他包的日志级别,默认情况下,所有的包都按照此级别输出日志。
log4j.rootLogger=debug, Appender1, Appender2
我们可以增加自定义包的日志级别配置,格式如下:
# XXX 是包名,level是日志级别
log4j.logger.XXX=level
例如我们配置如下:
log4j.rootLogger=debug, Appender1, Appender2
log4j.logger.com.rising.testlog=debug
我们的主程序在 com.rising.testlog 包下,此时我们运行主程序,查看控制台日志输出:
此时我们发现,日志按照我们预期的目标输出了,Spring框架的只输出了 info 级别的日志,我们自己定义的“com.rising.testlog“包下输出的是 debug 级别的日志。
4. 更优雅的使用 log
按照上面的配置,那么我们在每个需要使用log的类中都需要增加一行如下代码:
private static Logger log = LoggerFactory.getLogger(XXX.class);
那么有没有更简单的方式呢?
有的,那就是使用注解 @SLF4J
4.1 如何使用
4.1.1 pom文件引入依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version></dependency>
4.1.2 代码中进行注解配置
我们将 private static Logger log = LoggerFactory.getLogger(TestLogApplication.class);
代码注释掉,在类上标注 @SLF4j注解即可(注,@Slf4j 默认引入了名称为 log 的日志对象,所以直接使用 log.info() | log.debug() 即可,无需再次声明。)
springboot 集成 log4j,log4j配置不同包不同日志输出级别(按包输出不同级别日志)相关推荐
- log4j.properties配置与将异常输出到Log日志文件实例
将异常输出到 log日志文件 实际项目中的使用: <dependencies><dependency><groupId>org.slf4j</groupId& ...
- SpringBoot集成Actuator端点配置
1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...
- SpringBoot 集成 clickhouse + mybatis-plus 配置及使用问题说明(含建表语句、demo源码、测试说明)
1.建表语句 -- 建表 CREATE TABLE IF NOT EXISTS tb_stat ( id String, region String, group String, yesterday ...
- springboot集成Apollo分布式配置
安装Apollo服务 1.安装mysql 地址:https://www.cnblogs.com/xuaa/p/10782352.html 2.下载Apollo源码到本地 地址:https://gith ...
- SpringBoot集成cas-client 客户端配置拦截过滤,绝对最简单有效,亲测
我使用的cas-client客户端为2.0.0-GA.对于以前使用web.xml进行配置的只需要更改配置文件即可.此文我主要是针对用于SpringBoot集成客户端的过滤请求讲解. 由于最新的cas客 ...
- springboot集成redis redis配置手把手交你不踩坑
前面我们已经介绍过redis的安装配置和使用以及一些redis的基本概念,如果还有小伙伴不太熟悉的话可以翻翻我之前的博客 1.初识redis 从这篇博客开始看,看完这几篇以后相信你对Redis的概念会 ...
- SpringBoot集成Mybatis(0配置注解版)
Mybatis初期使用比较麻烦,需要各种配置文件.实体类.dao层映射关联.还有一大推其它配置.当然Mybatis也发现了这种弊端,初期开发了generator可以根据表结构自动生成实体类.配置文件和 ...
- apollo修改配置刷新bean_携程开源的分布式apollo技术整合springboot集成实现动态刷新配置
分布式apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性. 本 ...
- springboot集成mqtt相关配置+案例
sdk版本 spring 6.0 springboot 3.x 官网配置说明 spring 官方说明 https://docs.spring.io/spring-integration/referen ...
- SpringBoot集成Redis和配置Redis做缓存
Redis介绍 Redis是一个开源的.高性能的.基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求,直观的存储结构使得通过程序交互十分简单. Redis数据库中所有 ...
最新文章
- B+树检索的时间复杂度
- 全球及中国斜交胎市场品牌竞争形势与投资策略分析报告2022年
- leetcode 202. Happy Number
- sqlserver连接和操作数据库
- 史上最全java架构师技能图谱(下)
- mysql5.1数据库乱码_MySql5.1以上版本中文乱码的解决方法
- 编程之美 3.1 字符串移位包含问 复杂度(O(N*K)
- 树莓派初始化安装与配置
- 大气金属片头LOGO扫光动画PR模板MOGRT
- Unity3D FingerGestures 手势插件使用
- 终于解决 归递调用 警告,其实程序没有 归递调用*** WARNING L13: RECURSIVE CALL TO SEGMENT
- MYSQL 数据库对象管理实验
- ParameterResolutionException单元测试方法中添加了参数,这是不允许的
- H5的学习(二)编辑器的选择
- 自动驾驶平台Apollo 2.5环境搭建
- 最小生成树(普里姆算法)
- journald.conf 中文手册
- 程序员是怎么安排电脑桌面的
- 山东大学计算机考博难度,我的四个考博面试经历:人大,山大,华科,华理工...
- 计算机 调 应用统计,山东工商学院统计学院2020年应用统计专硕调剂信息
热门文章
- x86 android 显卡 tablet2,Re: android4.4.2将tablet更改为phone
- 国内外的几大主流浏览器性能比较
- uc android flash插件,Android版UC浏览器7.3发布 支持Flash元素
- A 跳高【中兴捧月神算师-算法精英挑战赛-比特派第一场】
- mysql_front安装_MySql5.5安装步骤及MySql_Front视图配置
- xposed框架安全模式_Android 系统上的 Xposed 框架中都有哪些值得推荐的模块?
- 情感分类介绍及发展方向
- 抖音下载小助手GUI版
- Android WebView实现长截图
- 华为P40怎么解账号锁P40Pro忘记密码ID账号锁解除方案开机设备解锁帐号软件使用方法