减少编写日志的组件 slf4j-spring-boot-starter

Apache
Java 查看源码»
跨平台
2019-06-21
coder-xsx

一个注解搞定日志的组件,减少到处编写日志的烦恼,还可定位代码

原理说明

AOP + Reflect

作用范围

任意由spring调用的方法

使用说明

一、准备工作

  1. 添加依赖:
<dependency>
    <groupId>wiki.xsx</groupId>
    <artifactId>slf4j-spring-boot-starter</artifactId>
    <version>RELEASE</version>
</dependency>
  1. 开启日志:

yml方式:

logging:
  level:
    wiki.xsx.log: 对应级别

properties方式:

logging.level.wiki.xsx.log: 对应级别

二、开始使用

例如:

@Service
public class TestService {

    @ParamLog("test1")
    public void test1() {}

    @ResultLog("test2")
    public void test2(String name) {}

    @ThrowingLog("test3")
    public void test3(String name, int id) {}

    @Log("test4")
    public void test4(String name, int ...id) {}
}

方法调用:

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        TestService bean = context.getBean(TestService.class);
        bean.test1();
        bean.test2("xsx");
        bean.test3("xsx`", 1);
        bean.test4("xsx2", 1, 2, 3, 4);
    }
}

打印效果:

2019-06-20 00:53:32.390 DEBUG 7932 --- [           main] wiki.xsx.core.log.LogProcessor           : 调用方法:【com.example.demo.service.TestService.test1(TestService.java:19)】,业务名称:【test1】,接收参数:【{}】
2019-06-20 00:53:32.405 DEBUG 7932 --- [           main] wiki.xsx.core.log.LogProcessor           : 调用方法:【com.example.demo.service.TestService.test2(TestService.java:22)】,业务名称:【test2】,返回结果:【null】
2019-06-20 00:53:32.412 DEBUG 7932 --- [           main] wiki.xsx.core.log.LogProcessor           : 调用方法:【com.example.demo.service.TestService.test4(TestService.java:28)】,业务名称:【test4】,接收参数:【{name=xsx2, id=[1, 2, 3, 4]}】
2019-06-20 00:53:32.413 DEBUG 7932 --- [           main] wiki.xsx.core.log.LogProcessor           : 调用方法:【com.example.demo.service.TestService.test4(TestService.java:28)】,业务名称:【test4】,返回结果:【null】

其他说明

日志类型

  1. @ParamLog:参数类型,仅打印参数
  2. @ResultLog:结果类型,仅打印结果
  3. @ThrowingLog:异常类型,仅打印异常
  4. @Log:综合类型,打印参数+结果+异常

日志参数

  1. value:业务名称
  2. level:日志级别,默认DEBUG
  3. position:代码定位,默认DEFAULT

日志级别

  1. DEBUG(默认): 调试级别
  2. INFO: 信息级别
  3. WARN: 警告级别
  4. ERROR: 错误级别

特别说明

  1. 日志级别为DEBUG时,默认开启代码定位,方便调试
  2. 其他级别默认关闭代码定位,减少不必要的开支,如需要可手动开启(position=Position.ENABLED)
的码云指数为
超过 的项目
加载中

评论(18)

开源中国彭于晏
开源中国彭于晏
整些花里胡哨的东西,一点都没用
lx106
lx106
花里胡哨的
王云十三
王云十三
我一般是 模版➕aop
松仁普
松仁普
花里胡哨的,我用lombok就一行
kut
kut
如果只是输入、输出的日志打印,其实直接filter或者interceptor就可以了。 如果是log的快捷方式,直接lombok就可以了。
TGVvbmFyZA
TGVvbmFyZA
讲真 LOMBOK不好用吗?
阿信sxq
阿信sxq
maven坐标写法不符合官方推荐形式,有点误导以为是官方的
Ely
Ely
+1
wangjin252
wangjin252
+1
Online_Reus
Online_Reus
+1
i
itmajing
确实是不符合规范,建议改一下
Kit_lee
Kit_lee
花式搞日志
Guest_Main
Guest_Main
传点大list试试
-
-喜头鱼-
list不都打印size么?谁直接打印list呀....
红芍
红芍
意义不大

slf4j-spring-boot-starter 1.1.3 发布

slf4j-spring-boot-starter 1.1.3 发布了,此次更新如下: 1.使用更规范的项目名称,原 spring-boot-starter-slf4j 2.修复一个参数空指针问题 3.修复基本包装数据类型数组显示为空问题 4.优化...

08/31 10:07

spring-boot-starter-slf4j 1.1.0 发布,优化代码逻辑

spring-boot-starter-slf4j 1.1.0 发布,添加新特性,优化代码逻辑。 一个注解搞定日志的组件,减少到处编写日志的烦恼,还可定位代码。 本次更新如下: 1. 优化代码逻辑,增加日志开启判断,...

06/22 09:24

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

【Spring Boot】4.日志

1 日志框架的选择 1.1 框架一览 JUL、JCL、JBoss-logging、log4j、log4j2、slf4j等。 |日志门面(抽象层)|日志实现| |-|-| |JCL(Jakra Commons Logging) SLF4j(Simple Logging Facade for J...

2018/12/27 09:15
167
0
Spring boot 实现maven的 dependency全局排除

场景 在Spring boot2.x里面默认是使用logback即spring-boot-starter-logging作为日志实现框架,现在想使用spring-boot-starter-log4j2,即如下操作即可 <dependency> <groupId>org.springfram...

09/04 17:22
33
2
gradle dependencies 写法

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.3.1' } 使用 def 定义变量, 引用时要用...

04/22 17:01
6
0
SpringBoot日志框架

1、市面上的日志框架 JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 日志门面 (日志的抽象层) 日志实现 JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for...

2018/12/03 09:54
37
0
log4j日志不输出的问题

今天服务器上报错,想先去看一下日志进行排查,结果发现日志很久都没有输出过了。从上午排查到下午,刚刚解决,因此记录一下,但现在也只是知其然,并不知其所以然,所以如果大家有什么想法请...

09/23 11:03
2
0
Spring Boot 2 实战: 集成log4j2日志框架

前言 Log4j2 是 Log4j 的进化版本,并提供了许多 Logback 可用的改进,同时解决了 Logback 体系结构中的一些固有问题。而且日志处理中我们会用到kafka作为日志管道。而kafka客户端依赖与Log...

10/09 01:05
62
0
处理spring boot 的 log 优化配置

spring boot 以jar 运行的时候,通过修改 application.properties 文件里面的配置,修改 日志的配置,通过官网查看,spring boot 支持在日志文件里面通过 springProperty 属性配置。 可以依赖...

09/26 19:48
16
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部