Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧AOP和SLF4J_Java_Spring_Aop_Slf4j_Java.util.logging - Fatal编程技术网

Java 弹簧AOP和SLF4J

Java 弹簧AOP和SLF4J,java,spring,aop,slf4j,java.util.logging,Java,Spring,Aop,Slf4j,Java.util.logging,我使用SpringAOP来建议一个Spring托管bean,它扩展了一个实现3个接口的抽象类。在继承层次结构中还有其他spring管理的bean 我尝试采用最小侵入性的方法,使用spring LTW: <context:component-scan base-package="com.foo.aop"/> <!-- ... --> <aop:aspectj-autoproxy proxy-target-class="true"/> <context:lo

我使用SpringAOP来建议一个Spring托管bean,它扩展了一个实现3个接口的抽象类。在继承层次结构中还有其他spring管理的bean

我尝试采用最小侵入性的方法,使用spring LTW:

<context:component-scan base-package="com.foo.aop"/>
<!-- ... -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:load-time-weaver/>
我有证据表明我的方法得到了建议,因为我可以从那里抛出并看到堆栈跟踪在适当的位置弹出

但是日志记录是难以捉摸的


(我正在将log4j和commons日志连接到slf4j。应用程序需要java util日志作为其底层实现。)

很可能您忘记了添加jvm参数-javagent 或 应用程序类路径中没有包含META-INF\aop.xml文件

详情请参阅下面的答案


您的问题中哪里有问号?
@Aspect
@Component
public class ForStackOverflow {

    private final Log commons = LogFactory.getLog(ForStackOverflow.class);
    private final org.apache.log4j.Logger log4j = org.apache.log4j.Logger.getLogger(ForStackOverflow.class);
    private final Logger jul = Logger.getLogger(ForStackOverflow.class.getSimpleName());
    private final org.slf4j.Logger slf4j = org.slf4j.LoggerFactory.getLogger(ForStackOverflow.class);

    @Pointcut(value="within(com.foo.aop.AbstractClass+) " +
                    "&& execution(* advisedMethod(com.foo.SomeType)) " +
                    "&& args(someType)")
    private void adviseMe(SomeType someType){}

    @After(value="adviseMe(com.foo.SomeType) && args(someType)", argNames = "someType")
    public void itWorked(SomeType someType) {
        String msg = "DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG";
        logIt(msg);               
        IsNotNull(someType, "someType");
        String message = "SomeType [ " + someType + "] loaded.";
        status(message);
        logIt(msg);
    }

    void status(String message) {        
        logIt(message);
    }

    private void logIt(String msg){
        System.out.println("STDOUT: " + msg);
        System.err.println("STDERR: " + msg);
        commons.warn("COMMONS: " + msg);
        log4j.warn("LOG4J: " + msg );
        jul.warning("JUL: " + msg);
        slf4j.warn("SLF4J: " + msg );
    }
}