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

該java工程的bin目錄下和com同級有一個log4j.properties的拷貝。

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


log4j因配置文件放置位置出錯
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
因為學習Mybatis初次接觸到log4j,出現(xiàn)以上的的報錯信息。
通過它的報錯信息可以知道缺少配置文件,但是我們已經(jīng)在資源文件夾下創(chuàng)建了對應的文件目錄及l(fā)og4j.properties配置文件。
網(wǎng)上某些解決辦法是由于我們的log4kj是2.x版本,所以配置文件設置的是log4j2.xml,以下是它的內容,在官方文檔上可以找到。
<?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)建這個文件后依舊是這個錯誤,那么我就懷疑是不是log4j包里面設置的就是在資源文件夾的根目錄下,移動到根目錄下果然問題解決了。目錄層級如下圖:

新的問題是如果把之前創(chuàng)建的log4j.properties配置文件放到資源文件夾根目錄下是不是有效。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用@JsonFormat和@DateTimeFormat對Date格式化操作
這篇文章主要介紹了使用@JsonFormat和@DateTimeFormat對Date格式化操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java創(chuàng)建型設計模式之抽象工廠模式(Abstract?Factory)
當系統(tǒng)所提供的工廠所需生產(chǎn)的具體產(chǎn)品并不是一個簡單的對象,而是多個位于不同產(chǎn)品等級結構中屬于不同類型的具體產(chǎn)品時需要使用抽象工廠模式,抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態(tài)2022-09-09
解決Springboot中@Async注解獲取不到上下文信息問題
實際開發(fā)中我們經(jīng)常需要通過spring上下文獲取一些配置信息,本文主要介紹了解決Springboot中@Async注解獲取不到上下文信息問題,具有一定的參考價值,感興趣的可以了解一下2024-01-01

