2015-05-19 8 views
12

मुझे किसी विशेष पैकेज के वर्गों के तरीकों तक पहुंचने पर जानकारी लॉग करने के लिए मेरे लॉगिंग पहलू को प्राप्त करने में समस्याएं आ रही हैं। दूसरे शब्दों में, "नहीं" लॉगिंग होती है। मैं भी निराश हो गया और कोई भाग्य के साथ System.out.println बयान जोड़ा।स्प्रिंग बूट लॉगर पहलू

मेरी कक्षाओं के

सभी, org.my.package पैकेज के अंतर्गत स्थित हैं यानी org.my.package.controller, org.my.package.model, आदि

यहाँ है मेरे आवेदन वर्ग:

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(); 
    } 
} 
:

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.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") 
} 

मैं कुछ है या नहीं तो मेरी पहलू वर्ग गलत को विन्यस्त लापता हूँ? अन्य, समान स्टैक ओवरफ़्लो प्रश्न और ऑनलाइन ट्यूटोरियल के साथ सत्यापन करने के बाद, मुझे कुछ भी गलत नहीं मिल रहा है।

कृपया सलाह दें।

+1

आप वर्तमान में 'org.my.package' में उप-पैकेजों में कक्षाओं पर मिलान करने वाले तरीकों से मेल नहीं खाते हैं। आप जो चाहते हैं वह है 'निष्पादन (* org.my.package .. *। * (..)) '' '' के बजाय '..' को नोटिस करें। –

+0

* फेस-हथेली * धन्यवाद !! वह यह था। कृपया उत्तर के साथ उत्तर दें, इसलिए मैं आपको इस प्रश्न के लिए क्रेडिट दे सकता हूं। – Rick

उत्तर

12

आपका पॉइंट कट, execution(* org.my.package.*.*(..)), केवल org.my.package पैकेज में उप-पैकेजों में कक्षाओं पर विधियों के निष्पादन से मेल खाता है।

आप जो चाहते हैं वह execution(* org.my.package..*.*(..)). के बजाय .. पर ध्यान दें।