Springのカスタムアノテーション構成によるシンプルなロギングの方法

Springでシンプルなログをカスタマイズするためには、以下の手順に従うことができます。

  1. 保存
  2. 実行時間 (じっこうじかん)
  3. @対象
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Loggable {
    String level() default "INFO";
}
  1. @側面
  2. @周囲
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class LogAspect {
    @Pointcut("@annotation(Loggable)")
    public void loggablePointcut() {}

    @Around("loggablePointcut() && @annotation(loggable)")
    public Object logAround(ProceedingJoinPoint joinPoint, Loggable loggable) throws Throwable {
        String level = loggable.level();
        switch (level) {
            case "INFO":
                // 使用日志框架打印INFO级别的日志
                break;
            case "DEBUG":
                // 使用日志框架打印DEBUG级别的日志
                break;
            case "ERROR":
                // 使用日志框架打印ERROR级别的日志
                break;
            default:
                break;
        }

        // 执行被注解的方法
        Object result = joinPoint.proceed();

        return result;
    }
}
  1. Springコンテナを設定する:Springの設定ファイルに以下の設定を追加して、アスペクトクラスを有効化します。
<aop:aspectj-autoproxy />
<bean class="com.example.LogAspect" />
  1. @ロギング可能
@Loggable(level = "INFO")
public void doSomething() {
    // ...
}

@Loggableアノテーションが付いているメソッドを呼び出すと、アスペクトクラスはアノテーションのプロパティに基づいてログのレベルを決定し、適切なログフレームワークを使用してログを出力します。

bannerAds