JUnit+Spring+log4j+mybatis,测试时,控制台用log4j打印sql等状态

发布于 2021-11-26 20:15:07 字数 37 浏览 839 评论 2

详细一点谢谢,网上找了好多,大多都一样..不能解决我的问题。求大神帮忙解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

坏尐絯 2021-11-29 13:07:00

不能解决。

浮生未歇 2021-11-28 18:21:11

首先推荐 将log4j 换成 logback  

如果非得用log4j的话,需要自己完成加载log4j配置文件的功能,因为通常log4j配置的加载都是通过WEB.XML文件进行的。

如何让spring容器加载log4j的配置呢,我们看一下 

public abstract class Log4jConfigurer

这是一个抽象类,所以我们需要借助spring的工厂来操作这个Log4jConfigurer,直接给代码吧

public class MytMethodInvokingFactoryBean extends MethodInvokingFactoryBean implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        super.afterPropertiesSet();
        Object[] args = getArguments();
        for (int i = 0; i < args.length; i++) {
            Object obj = args[i];
            if (obj instanceof String) {
                String arg =obj.toString();
                if(arg.startsWith("classpath:")||arg.startsWith("classpath*:")){
                    arg=arg.split(":")[1];
                    arg=this.getClass().getClassLoader().getResource(arg).getPath();
                    args[i]=arg;
                }
            }
        }
        setArguments(args);
    }
}

spring配置文件添加

<bean id="log4jInitialization"
          class="MytMethodInvokingFactoryBean">
        <property name="targetClass"
                  value="org.springframework.util.Log4jConfigurer" />
        <property name="targetMethod" value="initLogging" />
        <property name="arguments">
            <list>
                <value>classpath:cfg/log4j.xml</value>
            </list>
        </property>
    </bean>

这样初始化spring容器的时候就会加载log4j的配置了,junit的时候可以通过代码或者注解的方式初始化spring容器,log4j 级别设置成 trace 或者 debug ,下面给出一个junit的基础测试类

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations={"classpath:spring.xml"})
public class BaseTest {
    
    @Autowired
    protected ApplicationContext applicationContext;
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文