繁体   English   中英

Spring-AOP和SLF4J

[英]Spring-AOP and SLF4J

我正在使用Spring-AOP来建议Spring托管bean,该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/>

使用厨房水槽方法尝试进行记录:

@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 );
    }
}

我有证据表明建议使用我的方法,因为我可以从那里扔掉,并在适当的位置看到堆栈跟踪弹出。

但是记录是难以捉摸的。

(我将log4j和commons-logging桥接到slf4j。该应用程序需要Java util日志记录作为其基础实现。)

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

请参考以下答案以获取详细信息

弹簧加载时间编织未检测到@configurable注释的类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM