解决logback的日志文件路径问题
假如使用绝对路径,没有任何问题,就是移植性不太好。
假如使用相对路径,则要注意当前路径“.”是在哪儿?
一般我们都会在配置文件中加入log文件的存储目录,如
本人通过研究测试发现:
1.对于J2SE项目,当前路径为工程所在目录
如我的工程为:D:\test
则使用…/logs生成的日志文件位于:D:\logs
2.对于J2EE项目,当前路径为tomcat\bin所在目录
如我的tomcat路径为:D:\tomcat\bin
则使用…/logs生成的日志文件位于:D:\tomcat\logs
补充:logback加载外部配置文件重置logback配置文件路径
logback加载外部配置文件重置logback配置文件路径
logback作为一种成熟的日志框架,已被广泛应用在现代各种java项目中。
以javaweb项目为例,使用logback.xml作为logback的配置文件时,在代码中通常是将该配置文件放在src/main/resource/下,部署时该文件会放在classpath下。
但是,有时出于各种目的,需要将logback的配置文件放在特定的目录下,此时需要自定义logback配置文件的加载路径。
logback自动加载配置文件的优先级如下:
1.classpath下的logback-test.xml
2.classpath下的logback.groovy
3.classpath下的logback.xml
4.META-INF/services/ch.qos.logback.classic.spi.Configurator中的logback配置实现类
5.logback自带的默认配置文件BasicConfigurator
当需要将日志配置文件放在其他路径下时,其实就是logback重新加载配置文件的过程。
参考代码如下:
importch.qos.logback.classic.LoggerContext; importch.qos.logback.classic.joran.JoranConfigurator; importch.qos.logback.core.util.StatusPrinter; importjava.io.File; publicclassLogTest { privateorg.slf4j.Loggerlogger; privatech.qos.logback.classic.LoggerContextloggerContext; publicLogTest() { logger=org.slf4j.LoggerFactory.getLogger(this.class); loggerContext=(LoggerContext)org.slf4j.LoggerFactory.getILoggerFactory(); StringlogbackConfigPath=System.getProperty("user.dir")+"/your_logback_config/logback.xml"; Filefile=newFile(logbackConfigPath); if(!file.exists()) { logger.error("logbackConfigPathfileisnoexist"); } else { if(!file.isFile()) { logger.error("logbackConfigPathfileisnotafile"); } else { if(!file.canRead()) { logger.error("logbackConfigPathfilecannotread"); } else { JoranConfiguratorjoranConfigurator=newJoranConfigurator(); joranConfigurator.setContext(loggerContext); loggerContext.reset(); try{ joranConfigurator.doConfigure(file); }catch(Exceptione){ logger.error("logbackConfigPathLoadlogbackconfigfileerror.Message:{}",e.getMessage()); } StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext); } } } } }
System.getProperty(“user.dir”)是获取你程序当前的运行路径,这里也可以把这段代码封装成一个方法,配置文件的路径可以以参数的形式传入,也可以写死。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。