如何加载指定路径的Logback.xml
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何加载指定路径的Logback.xml相关的知识,希望对你有一定的参考价值。
相对路径的话,可以先获取到当前文件的编译路径,之后在找到想找文件的路径的思路来实现。举例:
XMLS.class.getClass().getResourceAsStream("/test/test.xml");
解释:XMLS.class.getClass()是获取当前的类编译路径,之后通过getResourceAsStream的形式即可找到要读取的文件的路径。
备注:这个方法中后面的路径也可以通过截取的形式来进行路径获取,实现原理都是找到当前类路径,之后通过相对位置找到另外文件路径。 参考技术A 代码 File logbackFile = new File("./conf/logback.xml"); if (logbackFile.exists()) LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(lc); lc.reset(); try configurator.doConfigure(logbackFile); catch (JoranException e) e.printStackTrace(System.err); System.exit(-1); 但是老师不按照策略输出,整了两小时,开始以为lc.reset()放错位置了,但是后来发现是我的JoranConfigurator这个类引用错了,正确的类路径是 ch.qos.logback.classic.joran.JoranConfigurator 但是我错误引用了 ch.qos.logback.access.joran.JoranConfigurator 哭死的节奏,debug到代码里面怎么就说没有处理contextName的Action,原来ch.qos.logback.access只处理基本的配置,上下文这个处理在logback-classic里面,究其原因是因为eclipse的自动提示,我下意识就选了第一个,这也算桑踹个检讨书吧.
logback.xml引入外部配置文件
参考技术A 项目使用的是springboot和logback,需要实现一个简单的功能,即在开发环境的时候,控制台打印sql语句,在正式生产的环境不打印sql语句。这里就需要在配置文件里面写好,dev环境的level,prod环境的level,需要在logback.xml引入变量。但直接在logback.xml中引入是不行的, Springboot官方文档 有说明。logback.xml的加载是先于application的,如果要使用application中的变量的话,只能使用logback-spring.xml或者logging.config来使用外部文件。
并且文档上也指出,使用其他形式的配置文件不可以使用springProperty相关的标签。
之前看一篇博客,也说到了这个问题,但它没有说明下语句,只有logback-spring.xml和logging.config才可以只用Spring的相关标签。
以上是关于如何加载指定路径的Logback.xml的主要内容,如果未能解决你的问题,请参考以下文章