介绍 |
Logback是由log4j创始人设计的另一个开源日志组件,本文介绍日志配置文件存放位置,日志配置文件加载过程 |
参考 |
logback的使用和logback.xml详解:来自 <https://blog.csdn.net/lhl1124281072/article/details/79852582> 解决 logback.xml 配置不起作用的问题: 来自 <https://blog.csdn.net/cnwyt/article/details/80462896> logback: http://logback.qos.ch/manual/configuration.html#auto_configuration |
|
logback配置加载过程:
Let us begin by discussing the initialization steps that logback follows to try to configure itself:
- Logback tries to find a file called logback-test.xml in the classpath.
- If no such file is found, logback tries to find a file called logback.groovy in the classpath.
- If no such file is found, it checks for the file logback.xml in the classpath..
- If no such file is found, service-provider loading facility (introduced in JDK 1.6) is used to resolve the implementation of com.qos.logback.classic.spi.Configurator interface by looking up the file META-INF\services\ch.qos.logback.classic.spi.Configurator in the class path. Its contents should specify the fully qualified class name of the desired Configurator implementation.
- If none of the above succeeds, logback configures itself automatically using the BasicConfigurator which will cause logging output to be directed to the console.
The last step is meant as last-ditch effort to provide a default (but very basic) logging functionality in the absence of a configuration file. |
|
|
Class path:
Where should the configuration files such as logback.groovy, logback-test.xml or logback.xml be located on the classpath? Configuration files such as logback.groovy, logback-test.xml or logback.xml can be located directly under any folder declared in the class path. For example, if the class path reads "c:/java/jdk15/lib/rt.jar;c:/mylibs/" then the logback.xml file should be located directly under "c:/mylibs/", that is as "c:/mylibs/logback.xml". Placing it under a sub-folder of c:/mylibs/, say, c:/mylibs/other/, will not work. For web-applications, configuration files can be placed directly under WEB-INF/classes/. 总结:logback.xml必须存放在class path所在的目录,其下的子目录不可以 |
|
查看classpath |
查看classpath code接口:
importch.qos.logback.core.util.StatusPrinter; importch.qos.logback.classic.LoggerContext; //打印Logback内部状态 LoggerContextlc=(LoggerContext)LoggerFactory.getILoggerFactory(); StatusPrinter.print(lc); //获取classpath路径 Strings=Thread.currentThread().getContextClassLoader().getResource("").getPath(); System.out.println("classpath=>"+s); |
|
|
1.src\main\resources 目录下没有logback.xml文件,或者配置文件存放在resources子目录下,启动程序,未找到配置文件,logback使用组件默认的日志配置
14:39:29,493 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 14:39:29,494 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 14:39:29,494 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml] 14:39:29,502 |-INFO in ch.qos.logback.classic.BasicConfigurator@77a567e1 - Setting up default configuration. classpath => */out/production/classes/ |
|
|
2.把logback .xml文件放置在resource目录下,src\main\resources\logback.xml,找到了 配置文件logback.xml
14:55:03,053 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 14:55:03,053 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 14:55:03,053 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/*/out/production/resources/logback.xml] |
|
小结 |
- logback组件启动会自动到classpath目录下依次查找logback-test.xml,logback.groovy,logback.xml,查找到就加载,没有查找到加载组件默认的
- 一般日志配置文件放在java项目的resource根目录src\main\resources\logback.xml
|
转载自CSDN:https://blog.csdn.net/lanmolei814/article/details/102839755