2017-01-10 2 views
0

Ich möchte die Protokollierung in meine Java-Anwendung mit AspectJ und Slf4j hinzufügen. Grundsätzlich ist der Aspekt delegeates nur auf die slf4j Methoden in dieser Art und Weise:SLF4J Logger druckt nichts auf der Konsole

package my.domain.com; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public aspect MyAspectLogger { 

    private Logger logger; 

    public MyAspectLogger() { 
     this.logger = LoggerFactory.getLogger("MyAspectLogger"); 
    } 

    pointcut callSomeFunction(): call(* de.my.domain.MyClass.*()); 

    before() : callSomeFunction() { 
     logger.error("**** (Before) Called something in MyClass ****"); 
    } 

    after() : callSomeFunction() { 
     System.out.println("**** (After) Called something in MyClass ****"); 
    } 
} 

Warum hat die System.out.println() Druck die Nachricht aber die logger.error() die Nachricht nicht drucken?

+1

Haben Sie eine SLF4J-Implementierung wie Logback auf Ihrem Klassenpfad? – nille85

+0

Dank Ihres Hinweises: Nachdem ich 'slf4j-simple' zu ​​meinem Klassenpfad hinzugefügt habe, ist der Logger funktionsfähig. – kiltek

+0

Dann schlage ich vor, dass entweder @ nille85 eine Antwort schreibt und kiltek diese akzeptiert, um die Frage zu beenden, oder kiltek löscht die Frage vollständig. Und übrigens, ich habe das Thema und die Tags so bearbeitet, dass sie sich auf das eigentliche Problem beziehen. Dies steht in keiner Beziehung zu AspectJ. – kriegaex

Antwort

1

Sie sollten sicherstellen, dass es eine SLF4J-Implementierung wie Logback für den Klassenpfad gibt.

+0

Und auch diese Implementierung ist nicht NOOP. – rkosegi

Verwandte Themen