日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

springBoot AOP环绕增强、自定义注解、log4j2、MDC

發(fā)布時(shí)間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springBoot AOP环绕增强、自定义注解、log4j2、MDC 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(一)log4j2 maven配置

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!-- 切換log4j2日志讀取 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency> <!-- 配置 log4j2 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><!-- 加上這個(gè)才能辨認(rèn)到log4j2.yml文件 --><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-yaml</artifactId></dependency>

在resources 文件夾下創(chuàng)建log4j2.yml 文件

Configuration:status: warnProperties: # 定義全局變量Property: # 缺省配置(用于開(kāi)發(fā)環(huán)境)。其他環(huán)境需要在VM參數(shù)中指定,如下:#測(cè)試:-Dlog.level.console=warn -Dlog.level.xjj=trace#生產(chǎn):-Dlog.level.console=warn -Dlog.level.xjj=info- name: log.level.consolevalue: trace- name: log.level.xjjvalue: trace- name: log.pathvalue: D:/Logs/log- name: project.namevalue: my-spring-bootAppenders:Console: #輸出到控制臺(tái)name: CONSOLEtarget: SYSTEM_OUTThresholdFilter:level: ${sys:log.level.console} # “sys:”表示:如果VM參數(shù)中沒(méi)指定這個(gè)變量值,則使用本文件中定義的缺省全局變量值onMatch: ACCEPTonMismatch: DENYPatternLayout:pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m %X{REQUESTID} %n"RollingFile: # 輸出到文件,超過(guò)128MB歸檔- name: ROLLING_FILEignoreExceptions: falsefileName: ${log.path}/${project.name}.logfilePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"PatternLayout:pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m %X{REQUESTID} %n"Policies:SizeBasedTriggeringPolicy:size: "128 MB"DefaultRolloverStrategy:max: 1000Loggers:Root:level: infoAppenderRef:- ref: CONSOLE- ref: ROLLING_FILELogger: # 為com.xjj包配置特殊的Log級(jí)別,方便調(diào)試- name: com.xjjadditivity: falselevel: ${sys:log.level.xjj}AppenderRef:- ref: CONSOLE- ref: ROLLING_FILE

其中?%X{REQUESTID} 為MDC設(shè)定的請(qǐng)求標(biāo)識(shí),每個(gè)請(qǐng)求都會(huì)有,用于跟蹤日志。

(二)MDC和AOP 環(huán)繞增強(qiáng)、自定義注解

創(chuàng)建日志類(lèi)

public class tools_log {public static Logger getLogger(Class class_) {Logger logger = LoggerFactory.getLogger(class_);return logger;} }//end

AOP、MDC

@Aspect @Component @Slf4j public class LogAspect {@Pointcut("execution(public * 包路徑..*.*(..))")public void LogHelp() {}@Pointcut("@annotation(自定義注解路徑)")public void noAnnotation() {}final Logger logger = tools_log.getLogger(this.getClass());@Around("LogHelp()&&!noAnnotation()")public Object arround(ProceedingJoinPoint joinPoint) {MDC.put("REQUESTID", UUID.randomUUID().toString());logger.info("方法環(huán)繞start.....");// 接收到請(qǐng)求,記錄請(qǐng)求內(nèi)容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 記錄下請(qǐng)求內(nèi)容logger.info("URL : " + request.getRequestURL().toString());logger.info("HTTP_METHOD : " + request.getMethod());logger.info("IP : " + request.getRemoteAddr());logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());logger.info("ARGS : " + JSON.toJSONString(joinPoint.getArgs()));try {Object o = joinPoint.proceed();logger.info("方法環(huán)繞proceed,結(jié)果是 :" + o);return o;} catch (Throwable e) {logger.error(e.toString());return null;} finally {MDC.clear();}} }//end

.. 表示匹配多個(gè)參數(shù)

* ?表示匹配一個(gè)參數(shù)

.* 表示匹配多個(gè)類(lèi)

?

自定義注解

@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface noAroundAnno { }//end

定義在方法上

?

轉(zhuǎn)載于:https://www.cnblogs.com/hcfan/p/9986185.html

總結(jié)

以上是生活随笔為你收集整理的springBoot AOP环绕增强、自定义注解、log4j2、MDC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。