好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

原文链接:https://blog.csdn.net/g_y_x_/article/details/84726110

查看更多关于解决logback的日志文件路径问题的详细内容...

  阅读:61次