package com.sonic.common.log;

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

/**
 * 忽略请求日志annotation.
 * 默认所有的请求都会被通过拦截器拦截并打印日志信息.如果是敏感接口,或者文件流而不需要打印日志
 * 可以通过这个annotation来指定接口不需要打印.
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface IgnoreRequestLog {
    IgnoreType[] types() default {IgnoreType.REQUEST, IgnoreType.RESPONSE};

    enum IgnoreType {
        /** 忽略请求日志 */
        REQUEST,
        /** 忽略响应日志 */
        RESPONSE,
        /** SILENT -> 整个接口请求，不输出日志 */
        SILENT,
    }
}
