解決logback的日志文件路徑問(wèn)題
假如使用絕對(duì)路徑,沒(méi)有任何問(wèn)題,就是移植性不太好。
假如使用相對(duì)路徑,則要注意當(dāng)前路徑“.”是在哪兒?
一般我們都會(huì)在配置文件中加入log文件的存儲(chǔ)目錄,如

本人通過(guò)研究測(cè)試發(fā)現(xiàn):
1.對(duì)于J2SE項(xiàng)目,當(dāng)前路徑為工程所在目錄
如我的工程為:D:\test
則使用…/logs生成的日志文件位于:D:\logs
2.對(duì)于J2EE項(xiàng)目,當(dāng)前路徑為tomcat\bin所在目錄
如我的tomcat路徑為:D:\tomcat\bin

則使用…/logs生成的日志文件位于:D:\tomcat\logs
補(bǔ)充:logback加載外部配置文件 重置logback配置文件路徑
logback加載外部配置文件 重置logback配置文件路徑
logback作為一種成熟的日志框架,已被廣泛應(yīng)用在現(xiàn)代各種java項(xiàng)目中。
以javaweb項(xiàng)目為例,使用logback.xml作為logback的配置文件時(shí),在代碼中通常是將該配置文件放在src/main/resource/下,部署時(shí)該文件會(huì)放在classpath下。
但是,有時(shí)出于各種目的,需要將logback的配置文件放在特定的目錄下,此時(shí)需要自定義logback配置文件的加載路徑。
logback自動(dòng)加載配置文件的優(yōu)先級(jí)如下:
1.classpath下的logback-test.xml
2.classpath下的logback.groovy
3.classpath下的logback.xml
4.META-INF/services/ch.qos.logback.classic.spi.Configurator中的 logback 配置實(shí)現(xiàn)類
5.logback自帶的默認(rèn)配置文件BasicConfigurator
當(dāng)需要將日志配置文件放在其他路徑下時(shí),其實(shí)就是logback重新加載配置文件的過(guò)程。
參考代碼如下:
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”) 是獲取你程序當(dāng)前的運(yùn)行路徑,這里也可以把這段代碼封裝成一個(gè)方法,配置文件的路徑可以以參數(shù)的形式傳入,也可以寫(xiě)死。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
30條Java代碼編寫(xiě)經(jīng)驗(yàn)分享
你知道寫(xiě)好Java代碼的30條經(jīng)驗(yàn)是什么嗎?這篇文章主要為大家分享了30條Java代碼編寫(xiě)經(jīng)驗(yàn)技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
SpringSecurity的安全過(guò)濾器鏈功能詳解
本文介紹了如何配置SpringSecurity的安全過(guò)濾器鏈,包括定義URL路徑的訪問(wèn)權(quán)限、用戶認(rèn)證和授權(quán)配置、自定義CSRF過(guò)濾器等內(nèi)容,通過(guò)這些配置,可以實(shí)現(xiàn)對(duì)不同URL路徑的訪問(wèn)控制以及用戶的登錄、注銷等功能,感興趣的朋友一起看看吧2025-03-03
Java 中的字符串替換方法之replace, replaceAll 和 rep
在Java中,字符串的替換是一種常見(jiàn)的操作,特別是在處理文本和格式化輸出時(shí),本文將詳細(xì)討論這些方法的用法、區(qū)別以及示例,感興趣的朋友一起看看吧2024-12-12
Java處理時(shí)間格式CST和GMT轉(zhuǎn)換方法示例
這篇文章主要給大家介紹了關(guān)于Java處理時(shí)間格式CST和GMT轉(zhuǎn)換方法的相關(guān)資料,相信很多小伙伴在時(shí)間格式轉(zhuǎn)換的時(shí)候非常頭疼,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Maven打包跳過(guò)測(cè)試的5種方式總結(jié)
使用Maven打包的時(shí)候,可能會(huì)因?yàn)閱卧獪y(cè)試打包失敗,這時(shí)候就需要跳過(guò)單元測(cè)試,下面這篇文章主要給大家介紹了關(guān)于Maven打包跳過(guò)測(cè)試的5種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
Java編程中隨機(jī)數(shù)的生成方式總結(jié)
在Java中利用自帶的類庫(kù)可以有三種途徑可以產(chǎn)生隨機(jī)數(shù),這里我們舉了一些簡(jiǎn)單的例子來(lái)進(jìn)行Java編程中隨機(jī)數(shù)的生成方式總結(jié),需要的朋友可以參考下2016-05-05

