欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

解决logback的日志文件路径问题

时间:2021-07-18 08:26:26|栏目:JAVA代码|点击:

假如使用绝对路径,没有任何问题,就是移植性不太好。

假如使用相对路径,则要注意当前路径“.”是在哪儿?

一般我们都会在配置文件中加入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”) 是获取你程序当前的运行路径,这里也可以把这段代码封装成一个方法,配置文件的路径可以以参数的形式传入,也可以写死。

上一篇:springboot整合Mybatis-plus的实现

栏    目:JAVA代码

下一篇:java实现excel和txt文件互转

本文标题:解决logback的日志文件路径问题

本文地址:http://www.codeinn.net/misctech/158808.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有