springboot 指定 logback_springboot(6)——整合日志

目录

1、市面上的日志框架以及日志抽象层类

2、Springboot默认日志记录

3、总结


概述

我们在平时开发项目的时候想知道程序运行情况一般可以使用sysout.print();打印一些关键的代码或者通过debug查看运行状态,但是对于这种sysout.print();很现任出现代码多余。市场上也就出现许多记录运行状态的框架。例如Log4j、JUL、logback等,我们在项目中选择一个使用即可,但是如果过段时间出来一个新的日志框架,我们去掉之前框架,使用新的框架,又的修改api,我们是不是可以采用面向接口开发的思想,定制一个抽象层的日志接口层,分装统一的api,使用指定的日志框架,但是抽象层的接口一直使用日志抽象层,这样,我们想换日志框架的时候,直接导入新的依赖,无需修改已有的api。

1市面上的日志框架以及日志抽象层类

日志抽象层框架:JCL、SLF4j、jboss-logging

日志实现层框架:log4j、logback、JUL、log4j2

开发中我们从日志抽象层框架选一个作为抽象接口层,再从日志实现层框架选一个作为实现类,用来记录我们项目中的日志

2Springboot默认日志记录

在springboot中,boot默认抽象接口层使用slf4j,实现层用logback,当我们我们可以从项目中查看,如下

我创建了一个demo项目,pom中引入的依赖文件如下

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.junit.vintagejunit-vintage-engine

项目

如果使用logback作为日志处理框架,logback 包括,logback-core、logback- classic、logback-access。logback-core是其它两个模块的基础模块,如果项目中引入了spring-boot-starter-web的依赖树,不再单独导入logback,可以看web依赖树

d49ad244-9631-494e-b491-36821201763f
087649b8c0e94427a04166680ca4a696

springboot项目引入web模块后,底层默认配置好了slf4j+logback日志记录,我们只需通过日志记录器根据需要选择不同级别的日志打印输出即可,也可以同时使用spring的AOP思想自定义一个日志记录类记录日志

记录器方式如下,需要的地方记录即可

public class TestController{ //记录器 Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { //日志级别,由低到高,调整日志级别,只输出高级别日志, logger.trace("这是trace跟踪信息"); logger.debug("这是debug调试信息"); //springboot默认输出info以后的级别,也就是root级别 logger.info("这是info自定义信息"); logger.warn("这是warn警告信息"); logger.error("这是error错误信息"); } }

通过AP思想记录日志

@Aspect//切面 @Component//组件 public class LogAspect { pivate final Logger logger = LoggerFactory.getLogger(this.getClass()); /* * 这里把切点切再controller(web)层下的每个方法 */ @Pointcut("execution(* com.javayihao.myweb.controller.*.*(..))") public void log() { } /* * 执行com.javayihao.myweb.controller下所有的方法之前执行这个方法 * 获取要记录的url ip 请求的方法 以及请求时候所带的参数 * @param joinPoint */ @Before("log()") public void doBefore(JoinPoint joinPoint) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String url = request.getRequestURL().toString(); String ip = request.getRemoteAddr(); //类名.方法 String classMethod = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName(); //参数 Object[] args = joinPoint.getArgs(); //调用自己封装的对象 RequestLog requestLog = new RequestLog(url, ip, classMethod, args); logger.info("Request : {}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值