Java自定义注解实现规范日志收集

本文介绍了如何通过自定义注解来实现规范的日志收集,以便于在投产和调试过程中快速定位问题。文章内容包括自定义注解的创建、切面日志收集的实现,以及Utils的相关辅助方法。由于作者在本地开发时将日志配置为不输出到控制台,因此未打印info级别的日志。建议读者了解并使用MDC进行日志增强。
摘要由CSDN通过智能技术生成

一、日志收集便于投产和调试对接 快速定位问题

自定义注解Class

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @ClassName: WebLog
 * @Author wgzhu
 * @Date 2022/6/24 14:47
 * @Version v 1.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({
    ElementType.METHOD })
@Documented
public @interface WebLog {
   

    /**
     * @return 日志描述信息
     */
    String description() default "";
}

切面日志收集Class


import com.yunbeast.common.enums.NumberEnum;
import com.yunbeast.common.util.JsonUtil;
import com.yunbeast.common.util.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.CodeSignature;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName: WebLogAspect
 * @Author wgzhu
 * @Date 2022/6/24 14:55
 * @Version v 1.0 记录请求日志切面
 */
@Slf4j
@Aspect
@Service
public class WebLogAspect {
   
    /**
     * invokeNo
     */
    private 
Java中,可以通过自定义注解实现AOP(面向切面编程)。AOP是一种编程思想,它可以在不修改原有代码的情况下,通过在关注点(例如日志、事务、安全性等)周围插入代码来实现特定的功能。 要实现AOP,首先需要创建一个自定义注解。在Spring Boot中,可以使用元注解`@Target`和`@Retention`来指定注解的使用范围和生命周期。然后,可以使用`@interface`关键字来定义注解,并在其中加入相关的元数据,如下所示: ```java @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { // 自定义注解的元数据 } ``` 在上面的例子中,`@Target(ElementType.METHOD)`表示该注解可以用于方法上,`@Retention(RetentionPolicy.RUNTIME)`表示该注解在运行时仍然可用。 接下来,可以将该注解应用于目标方法上,例如: ```java @MyAnnotation public void myMethod() { // 方法逻辑 } ``` 然后,可以使用AOP框架(如Spring AOP)来拦截带有自定义注解的方法,并在其周围插入额外的代码。这些额外的代码可以实现各种功能,比如日志打印、统计方法耗时等。 总结起来,要实现Java自定义注解实现AOP,需要以下步骤: 1. 创建一个自定义注解,并通过元注解指定其使用范围和生命周期。 2. 将自定义注解应用于目标方法上。 3. 使用AOP框架拦截带有自定义注解的方法,并在其周围插入额外的代码,实现特定功能。 通过这种方式,可以实现各种定制化的需求,并且在不修改原有代码的情况下为方法添加额外的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java AOP自定义注解](https://blog.csdn.net/baidu_28340727/article/details/128319277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值