如何加载指定路径的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的主要内容,如果未能解决你的问题,请参考以下文章

如何在logback.xml中自定义动态属性

logback 同一路径下只能有一个配置文件吗

logback.xml配置的日志文件在哪

springboot 中 logging.config 的 logback默认配置文件地址

小技巧:如何自定义logback日志文件的名称

logback.xml是啥文件?