解决logback的日志文件路径问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解决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重新加载配置⽂件的过程。
参考代码如下:
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.util.StatusPrinter;
import java.io.File;
public class LogTest
{
private org.slf4j.Logger logger;
private ch.qos.logback.classic.LoggerContext loggerContext;
public LogTest()
{
logger = org.slf4j.LoggerFactory.getLogger(this.class);
loggerContext = (LoggerContext) org.slf4j.LoggerFactory.getILoggerFactory();
String logbackConfigPath = System.getProperty("user.dir") + "/your_logback_config/logback.xml";
File file = new File(logbackConfigPath);
if(!file.exists())
{
logger.error("logbackConfigPath file is no exist");
}
else
{
if(!file.isFile())
{
logger.error("logbackConfigPath file is not a file");
}
else
{
if(!file.canRead())
{
logger.error("logbackConfigPath file can not read");
}
else
{
JoranConfigurator joranConfigurator = new JoranConfigurator();
joranConfigurator.setContext(loggerContext);
loggerContext.reset();
try {
joranConfigurator.doConfigure(file);
} catch (Exception e) {
logger.error("logbackConfigPath Load logback config file error. Message: {}",e.getMessage());
}
StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
}
}
}
}
}
System.getProperty(“user.dir”) 是获取你程序当前的运⾏路径,这⾥也可以把这段代码封装成⼀个⽅法,配置⽂件的路径可以以参数的形式传⼊,也可以写死。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
如有错误或未考虑完全的地⽅,望不吝赐教。