我創(chuàng)建了一個(gè)Benchmark注釋,它給出了使用 的方法調(diào)用的執(zhí)行時(shí)間Stopwatch。注釋Benchmark有一個(gè)默認(rèn)isEnabled屬性。true我想要的是,即使該值設(shè)置false為某種方法,如果日志記錄級(jí)別為DEBUG,也可以完成基準(zhǔn)測(cè)試。Spring Boot 有沒(méi)有辦法獲取應(yīng)用程序的當(dāng)前日志記錄級(jí)別。我知道我們可以為不同的包啟用多個(gè)日志記錄級(jí)別。如果對(duì)于當(dāng)前包或模塊,日志記錄級(jí)別設(shè)置為 DEBUG,則應(yīng)執(zhí)行基準(zhǔn)測(cè)試。這就是我的Benchmark注釋的樣子:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Benchmark { boolean isEnabled() default true;}進(jìn)行基準(zhǔn)測(cè)試的方面如下所示:@Aspect@Componentpublic class BenchmarkingAspect { @Around("@annotation(benchmark)") public Object benchmarkMethodRuntimeAspect(ProceedingJoinPoint proceedingJoinPoint, Benchmark benchmark) throws Throwable { if (benchmark.isEnabled()) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); Object returnedValue = proceedingJoinPoint.proceed(); stopWatch.stop(); log.info("Benchmarked: {} from class {}", proceedingJoinPoint.getSignature().getName(), proceedingJoinPoint.getTarget().getClass().getCanonicalName()); log.info(stopWatch.prettyPrint()); return returnedValue; } else { return proceedingJoinPoint.proceed(); } }}
1 回答
慕無(wú)忌1623718
TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為你可以這樣做;
Logger targetLogger = LoggerFactory.getLogger(proceedingJoinPoint.getTarget().getClass())
if (targetLog.isDebugEnabled()) {
// apply your logic here
}
添加回答
舉報(bào)
0/150
提交
取消
