java應(yīng)用程序如何自定義log4j配置文件的位置
自定義log4j配置文件的位置
使用log4j很方便
1、添加依賴的log4j-1.2.8.jar包;
2、增加log4j.properties配置文件,但這個(gè)配置文件應(yīng)該放在哪個(gè)目錄下比較合適,今天來討論下:如何自定義配置文件的存放位置,尤其是代碼需要打包運(yùn)行的時(shí)候就需要考慮這個(gè)問題。
一般情況,不論是java應(yīng)用程序還是web程序,代碼編譯成功且能正常運(yùn)行的情況下,log4j.properties配置文件會(huì)在com的同級(jí)目錄下有一個(gè)拷貝,如圖所示為java工程和web工程,都可以正常打印輸出日志信息。

該java工程的bin目錄下和com同級(jí)有一個(gè)log4j.properties的拷貝。

該web工程的classes目錄下和com同級(jí)有一個(gè)log4j.properties的拷貝。
當(dāng)java代碼需要打包運(yùn)行的時(shí)候,將log4j.properties配置文件存放到指定目錄是個(gè)比較好的選擇,便于發(fā)布和維護(hù),如圖就是將已發(fā)布好的目錄結(jié)構(gòu),應(yīng)用代碼打包成rwd_app.jar,配置文件放到config目錄下,代碼運(yùn)行時(shí)從自定義的目錄中加載日志配置文件。


log4j因配置文件放置位置出錯(cuò)
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
jar版本
log4j-1.2.17;log4j-api-2.11.1;log4j-core-2.11.1
因?yàn)閷W(xué)習(xí)Mybatis初次接觸到log4j,出現(xiàn)以上的的報(bào)錯(cuò)信息。
通過它的報(bào)錯(cuò)信息可以知道缺少配置文件,但是我們已經(jīng)在資源文件夾下創(chuàng)建了對(duì)應(yīng)的文件目錄及l(fā)og4j.properties配置文件。
網(wǎng)上某些解決辦法是由于我們的log4kj是2.x版本,所以配置文件設(shè)置的是log4j2.xml,以下是它的內(nèi)容,在官方文檔上可以找到。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
可是創(chuàng)建這個(gè)文件后依舊是這個(gè)錯(cuò)誤,那么我就懷疑是不是log4j包里面設(shè)置的就是在資源文件夾的根目錄下,移動(dòng)到根目錄下果然問題解決了。目錄層級(jí)如下圖:

新的問題是如果把之前創(chuàng)建的log4j.properties配置文件放到資源文件夾根目錄下是不是有效。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用@JsonFormat和@DateTimeFormat對(duì)Date格式化操作
這篇文章主要介紹了使用@JsonFormat和@DateTimeFormat對(duì)Date格式化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java創(chuàng)建型設(shè)計(jì)模式之抽象工廠模式(Abstract?Factory)
當(dāng)系統(tǒng)所提供的工廠所需生產(chǎn)的具體產(chǎn)品并不是一個(gè)簡(jiǎn)單的對(duì)象,而是多個(gè)位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中屬于不同類型的具體產(chǎn)品時(shí)需要使用抽象工廠模式,抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態(tài)2022-09-09
用JAVA 設(shè)計(jì)生成二維碼詳細(xì)教程
本文主要介紹用JAVA 設(shè)計(jì)生成二維碼,這里一步一步詳細(xì)介紹用 java 如何設(shè)計(jì)二維碼,并附有代碼示例以便參考,有需要的小伙伴可以參考下2016-08-08
Gradle修改本地倉庫的位置方法實(shí)現(xiàn)
這篇文章主要介紹了Gradle修改本地倉庫的位置方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
解決Springboot中@Async注解獲取不到上下文信息問題
實(shí)際開發(fā)中我們經(jīng)常需要通過spring上下文獲取一些配置信息,本文主要介紹了解決Springboot中@Async注解獲取不到上下文信息問題,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

