java項(xiàng)目打包成可執(zhí)行jar用log4j將日志寫在jar所在目錄操作
開發(fā)一個(gè)demo時(shí)想將日志輸出到最終打包的jar所在目錄,從網(wǎng)上學(xué)習(xí)實(shí)驗(yàn)整理之后的配置如下,
log4j.properties
log4j.rootLogger = INFO,console,logFile
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=INFO
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n
log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=false
log4j.appender.logFile.Encoding=UTF-8
log4j.appender.logFile.File=jarDemo.log
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n
Main.java
private static Logger logger = LoggerFactory.getLogger(Main.class);
static {
String path = new File("").getAbsolutePath();
FileAppender appender = (FileAppender) org.apache.log4j.Logger.getRootLogger().getAppender("logFile");
appender.setFile(path + File.separator + "jarDemo.log");
}
最終打包成jar執(zhí)行時(shí),將會(huì)在jar文件所在目錄生產(chǎn)一個(gè)jarDemo.log的日志文件,如果時(shí)用idea運(yùn)行,這個(gè)日志文件會(huì)在源碼所在項(xiàng)目的根目錄。
補(bǔ)充知識(shí):springboot工程打成jar包后運(yùn)行時(shí),讀取外部的配置文件
我們?cè)谑褂谩皃ackage spring-boot:repackage”命令,將工程打包成jar包之后,在部署到服務(wù)器時(shí),有些配置需要修改,尤其是部署不同的環(huán)境時(shí),像數(shù)據(jù)庫連接等參數(shù)都是需要修改的,為了不是每個(gè)服務(wù)器上都重新打包,就需要在jar包外部放置配置文件,jar包運(yùn)行時(shí)優(yōu)先讀取外部的配置文件,以windows系統(tǒng)下為例,在目錄“D:\package”目錄下運(yùn)行,
具體方法如下:
在D:\package目錄下新建lib目錄,將打好的jar包放進(jìn)去
在D:\package目錄下,將配置文件放進(jìn)去,例如application.properties
在D:\package目錄下創(chuàng)建run.bat,內(nèi)容如下:
java -jar -Dfile.encoding=UTF-8 lib/xxx.jar com.xxx.App
雙擊run.bat運(yùn)行
原理說明:
springboot 程序會(huì)從下面這些路徑來加載application.properties 配置文件(優(yōu)先級(jí)按前后順序)
jar包同級(jí)目錄下的/config目錄
jar包同級(jí)目錄
classpath里的/config目錄
classpath 同級(jí)目錄
以上這篇java項(xiàng)目打包成可執(zhí)行jar用log4j將日志寫在jar所在目錄操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解析Spring Boot 如何讓你的 bean 在其他 bean&n
在 SpringBoot 中如何讓自己的某個(gè)指定的 Bean 在其他 Bean 前完成被 Spring 加載?我聽到這個(gè)問題的第一反應(yīng)是,為什么會(huì)有這樣奇怪的需求?下面小編給大家分析下Spring Boot 如何讓你的 bean 在其他 bean 之前完成加載 ,感興趣的朋友一起看看吧2024-01-01
Java中使用@CrossOrigin和Proxy解決跨域問題詳解
這篇文章主要介紹了Java中使用@CrossOrigin和Proxy解決跨域問題詳解,在Web開發(fā)中,如果前端頁面和后端接口不在同一個(gè)域名下,就會(huì)發(fā)生跨域請(qǐng)求的問題,同源策略是瀏覽器的一種安全策略,它限制了來自不同源的客戶端腳本在瀏覽器中運(yùn)行時(shí)的交互,需要的朋友可以參考下2023-12-12
關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)
下面小編就為大家?guī)硪黄P(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
java累加和校驗(yàn)實(shí)現(xiàn)方式16進(jìn)制(推薦)
下面小編就為大家?guī)硪黄猨ava累加和校驗(yàn)實(shí)現(xiàn)方式16進(jìn)制(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解
這篇文章主要介紹了Java中過濾器、監(jiān)聽器和攔截器的區(qū)別詳解,有些朋友可能不了解過濾器、監(jiān)聽器和攔截器的區(qū)別,本文就來詳細(xì)講一下,相信看完你會(huì)有所收獲,需要的朋友可以參考下2024-01-01

