关于springboot项目中的不同环境下的日志级别配置(附源码,基于logback)
发布日期:2021-06-29 13:14:05 浏览次数:2 分类:技术文章

本文共 7950 字,大约阅读时间需要 26 分钟。

Logback旨在作为流行的log4j项目的后继者,从。

Logback的体系结构足够通用,可以应用在不同的情况下。目前,logback分为三个模块:logback-core,logback-classic和logback-access。

logback-core模块为其他两个模块奠定了基础。logback-classic模块可以与log4j的显着改进版本同化。此外,经典的logback原生实现了因此您可以轻松地在logback和其他日志框架(例如log4j或java.util.logging(JUL))之间来回切换。

logback-access模块​​与Servlet容器(例如Tomcat和Jetty)集成,以提供HTTP访问日志功能。请注意,您可以轻松地在logback-core之上构建自己的模块。

 

 

话不多说,先上配置文件:

logback.xml

${CONSOLE_LOG_PATTERN}
${log.path}/sys-info.log
${log.path}/sys-info.%d{yyyy-MM-dd}.log
60
${log.pattern}
INFO
ACCEPT
DENY
${log.path}/sys-error.log
${log.path}/sys-error.%d{yyyy-MM-dd}.log
60
${log.pattern}
ERROR
ACCEPT
DENY
${log.path}/sys-user.log
${log.path}/sys-user.%d{yyyy-MM-dd}.log
60
${log.pattern}

 

logback-dev.xml

 

logback-prd.xml

 

logback-test.xml

 

WebLogAspect.java

package cn.changemax.usercenter.aspect;import net.sf.json.JSONObject;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;import java.util.Arrays;/** * 功能描述: aop处理日志切面 */@Aspect@Componentpublic class WebLogAspect {    private Logger logger = LoggerFactory.getLogger(WebLogAspect.class);    private ThreadLocal
startTime = new ThreadLocal<>(); @Pointcut("execution(public * cn.changemax.usercenter.controller.*.*(..))") public void webLog() { } @Before("webLog()") public void deBefore(JoinPoint joinPoint){ // 接收到请求,记录请求内容 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); // 打印请求相关参数 logger.info("========================================== Start =========================================="); // 打印请求URL logger.info("URL : {}", request.getRequestURL().toString()); // 打印http method logger.info("HTTP Method : {}", request.getMethod()); // 打印调用controller的全路径以及执行方法 logger.info("Class Method : {}.{}", joinPoint.getSignature().getDeclaringType(), joinPoint.getSignature().getName()); // 打印请求的IP logger.info("IP : {}", request.getRemoteAddr()); // 打印请求入参 logger.info("Request Args : {}", Arrays.toString(joinPoint.getArgs())); } @After("webLog()") public void doAfter(){ logger.info("=========================================== End ==========================================="); // 每个请求之间空一行 logger.info(""); } @Around("webLog()") public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{ long startTime = System.currentTimeMillis(); Object result = proceedingJoinPoint.proceed(); // 打印出参 logger.info("Response Args : {}", JSONObject.fromObject(result).toString()); // 执行耗时 logger.info("Time-Consuming : {} ms", System.currentTimeMillis() - startTime); return result; }}

 

完成以上配置后,我们只需要在application.yml配置文件中配置对应的logging就是:

logging:  #  config: classpath:logback-dev.xml  level:    cn.changemax.*: debug

 

转载地址:https://changemax.blog.csdn.net/article/details/102459333 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:什么是一级缓存?使用一级缓存有什么优势?
下一篇:关于在sql语句中直接递归实现(此文章基于pgsql实现)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月25日 15时06分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章