import ch.qos.logback.classic.Level;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
import java.lang.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* <p>改变Bean的日志级别,可以让它不打印日志
* 具体使用是在日之类上加上@NoLogBeanPostProcessor.NoLog即可。
* </p>
*
* <code>
* @RestController
* @NoLogBeanPostProcessor.NoLog
* public logController {
*
* }
* </code>
* @Author Lycol
*/
@Component
public class NoLogBeanPostProcessor implements BeanPostProcessor{
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if(bean.getClass().isAnnotationPresent(NoLog.class)){
noLogClasses.add(bean.getClass());
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
for(Class clazz: noLogClasses){
ch.qos.logback.classic.Logger target = loggerContext.getLogger(clazz);
target.setLevel(Level.OFF);
}
return bean;
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface NoLog{
}
private List<Class> noLogClasses= Collections.synchronizedList(new ArrayList<>());
final ch.qos.logback.classic.LoggerContext loggerContext = (ch.qos.logback.classic.LoggerContext) LoggerFactory.getILoggerFactory();
}
使用注解让SL4j打不出日志出来
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...