我正在尝试为我的Spring启动API做一个Logging方面,以便每次请求到服务器时,所有内容都记录到一个文件中。但是,我无法发挥自己的作用。我在做什么错了?
这是方面
@Aspect
@Component
public class Logging {
private Logger log;
@Before("execution(* com.package.TeamController.*(..))")
public void before(JoinPoint joinPoint){
log = Logger.getLogger(joinPoint.getClass());
log.info("Starting request " + joinPoint.getSourceLocation());
if(joinPoint.getArgs()!=null){
log.info(" Arguments are");
for(Object obj : joinPoint.getArgs()){
log.info(obj.getClass().getName() );
}
}
}
}
应用程序入口点是
@SpringBootApplication(scanBasePackages =
{"com.package", "com.aspect"})
@EnableJpaRepositories
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我的application.properties文件包含这一行
spring.aop.auto=true
我在做什么错?当调用TeamController中的方法时,为何方面不记录日志信息?
注意 通过GET请求调用团队控制器方法
NOTE2 Intelij Ide有一个可视化工具,可导航到建议的方法,当我查找它时,它会向我显示控制器方法,但是建议仍然无法正常工作
答案 0 :(得分:0)
发现了问题。首次创建文件Intelij时建议使用方面而不是Java类,从而创建文件Logging.aj并创建
public aspect Logging{}
当我将Aspect关键字重命名为class关键字时,文件仍然是.aj类型。我将其重命名为.java,现在可以正常使用了。