Spring Boot Logger方面

当访问特定包的类中的方法时,我在记录日志信息时遇到问题。 换句话说,发生“不”记录。 我甚至绝望并添加了System.out.println语句,没有运气。

我的所有类都位于org.my.package包下,即org.my.package.controllerorg.my.package.model等。

这是我的Application类:

package org.my.package; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; @Configuration @ComponentScan(basePackages = {"org.my.package.config"}) @EnableAutoConfiguration @EnableAspectJAutoProxy public class FirstWebAppApplication { public static void main(String[] args) { SpringApplication.run(FirstWebAppApplication.class, args); } } 

这是我的配置类:

 package org.my.package.config; import org.deloitte.javatraining.daythree.utilities.MyLogger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; @Configuration @EnableAspectJAutoProxy @ComponentScan(basePackages = {"org.my.package.utilities"}) public class AssetConfig { //----------------------------------------------------------------------------------------------------------------------- @Bean public MyLogger myLogger(){ return new MyLogger(); } } 

这是我的Aspect类:

 package org.my.package.utilities; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Aspect @Component public class MyLogger { /** Handle to the log file */ private final Log log = LogFactory.getLog(getClass()); public MyLogger () {} @AfterReturning("execution(* org.my.package.*.*(..))") public void logMethodAccessAfter(JoinPoint joinPoint) { log.info("***** Completed: " + joinPoint.getSignature().getName() + " *****"); System.out.println("***** Completed: " + joinPoint.getSignature().getName() + " *****"); } @Before("execution(* org.my.package.*.*(..))") public void logMethodAccessBefore(JoinPoint joinPoint) { log.info("***** Starting: " + joinPoint.getSignature().getName() + " *****"); System.out.println("***** Starting: " + joinPoint.getSignature().getName() + " *****"); } } 

这些是我的Gradle构建依赖项:

 dependencies { compile("org.springframework.boot:spring-boot-starter-data-jpa") compile("org.springframework.boot:spring-boot-starter-web") compile('com.h2database:h2:1.3.156') compile('javax.servlet:jstl:1.2') compile('org.springframework.boot:spring-boot-starter-aop') providedRuntime("org.apache.tomcat.embed:tomcat-embed-jasper") testCompile("org.springframework.boot:spring-boot-starter-test") } 

我错过了什么或者错误配置我的Aspect类吗? 在使用其他类似的Stack Overflow问题和在线教程进行validation后,我找不到任何错误。

请指教。

你的切点, execution( * org.my.package.*.*(..)) ,只匹配org.my.package包中的类的方法执行而不是子包。

您可能想要的是execution( * org.my.package..*.*(..))注意..而不是.