网关动态调整日志级别

需求:通过标记动态改变系统日志级别
实现:请求header添加zuul-log-level:info标记实现改变日志级别
代码:
网关默认日志级别
在这里插入图片描述

@Slf4j
@Component
public class MyFilter extends ZuulFilter {

	//获取配置日志级别,没有配置为INFO
    @Value("${logging.level.com.zhang.service:#{INFO}}")
    private String defLevel;

    @Override
    public String filterType() {
        return FilterConstants.PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        //日志级别
        changeLevel( getCurrentContext().getRequest().getHeader("zuul-log-level"));
        //TODO do something

        return null;
    }

    /**
     * 路由请求日志级别更改
     *
     * @param level 日志级别
     */
    private void changeLevel(String level) {
        if (StringUtils.isEmpty(level)) {
            return;
        }
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        ch.qos.logback.classic.Logger logger = loggerContext.getLogger("com.zhang.yy");
        if (Objects.nonNull(logger) && !level.equalsIgnoreCase(logger.getLevel().toString())) {
            logger.setLevel(Level.toLevel(level, Level.toLevel(defLevel)));
        }
    }
}

postman请求测试
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值