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

作者:叶_子_X 时间:2023-06-13 10:48:09 

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

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

一般我们都会在配置文件中加入log文件的存储目录,如

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

本人通过研究测试发现:

1.对于J2SE项目,当前路径为工程所在目录

如我的工程为:D:\test

则使用…/logs生成的日志文件位于:D:\logs

2.对于J2EE项目,当前路径为tomcat\bin所在目录

如我的tomcat路径为:D:\tomcat\bin

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/g_y_x_/article/details/84726110

标签:logback,日志,路径
0
投稿

猜你喜欢

  • Android 弹出Dialog时隐藏状态栏和底部导航栏的方法

    2021-06-22 16:54:53
  • java发起http请求调用post与get接口的方法实例

    2022-12-28 23:22:58
  • JDK1.8新特性之方法引用 ::和Optional详解

    2021-09-13 08:47:33
  • C# 使用HttpClient模拟请求的案例

    2023-10-16 18:20:14
  • java基于包结构的请求路由实现实例分享

    2021-10-23 13:10:18
  • Android自定义View软键盘实现搜索

    2022-02-10 07:22:45
  • Android 内存泄漏的几种可能总结

    2022-02-27 21:43:26
  • VS2019打包WPF安装程序最新教程(图文详解)

    2021-11-18 15:52:08
  • Android studio 运行main 函数的方法

    2023-09-14 15:57:38
  • Java语法糖之个数可变的形参的实现

    2023-12-05 00:13:20
  • Java对世界不同时区timezone之间时间转换的处理方法

    2023-11-08 13:19:30
  • Spring注解与P/C命名空间超详细解析

    2022-08-04 19:42:34
  • 详谈Java中的事件监听机制

    2022-08-05 00:29:30
  • Repeater中添加按钮实现点击按钮获取某一行数据的方法

    2022-05-17 08:19:31
  • Mybatis控制台打印SQL语句的两种方式实现

    2023-06-23 14:24:57
  • 在Android中动态添加Panel框架的实现代码

    2022-01-17 23:17:07
  • 浅谈Java后台对JSON格式的处理操作

    2023-02-16 07:28:36
  • JAVA面试题 简谈你对synchronized关键字的理解

    2022-09-17 17:06:05
  • SpringBoot Web依赖教程

    2023-01-06 21:51:50
  • Android游戏开发之黑白棋

    2023-05-24 13:39:03
  • asp之家 软件编程 m.aspxhome.com