非spring框架应用使用logback配置日志

熟悉springboot应用开发得技术人员都知道logback配置文件要生效,只需要创建logback.xml或者logback-spring.xml文件放到对应工程src/main/resources目录下启动应用即可。然而当脱离了spring这个全家桶之后,单纯的java maven工程要使用logback日志组件加载配置却不是那么得熟练了。本文简单分享下这块相关得配置。

本人得需求本很简单,使用java语言开发了个SDK工具包,当执行junit单元测试用例得时候,写在逻辑里的日志却打印不出来。先后做了下面的实验,最终还是实现了。
第一步、没有日志配置文件,要让控制台打印日志几乎不可能。
于是在src/main/resources下新建了logback.xml文件

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss} %level %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

运行用例,没有任何效果。

第二步、想起springboot应用框架本身会自动加载配置日志配置文件,然而咱这块并没有引入spring框架。
于是找如何让非spring工程在单元测试中添加logback配置文件,有人给出下面的方案:

@BeforeClass
    public static void setupLogger() {
        // 创建 LoggerContext,并通过 JoranConfigurator 加载 logback.xml 配置文件
        LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
        context.reset();
        JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(context);
        try {
            configurator.doConfigure("logback.xml");
        } catch (Exception e) {
            // 配置加载失败
            e.printStackTrace();
        }

        // 打印 Logback 内部状态,可以检查配置是否成功加载
        StatusPrinter.printInCaseOfErrorsOrWarnings(context);
    }

感叹命运不公呢,执行用例报logback.xml不存在,改为classpath:logback.xml也没用。

第三步、官方应该不会骗人,于是找到了下面得答案

    @BeforeClass
    public static void setupLogger() {
        System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY,"logback.xml");
    }

短小精悍,一针见血。执行用例发现生效了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱运动的跑者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值