1. 程式人生 > >1 - smart(Maven:Package,Install,&,Log4j2)

1 - smart(Maven:Package,Install,&,Log4j2)

break 不能 isl res 文件 過濾器 support .json hover

mvn package 時,增加如下命令-Dmaven.test.skip=true

則表示package打包時,不執行也不編譯測試用例,mvn package -Dmaven.test.skip=true 如果是: mvn package -DskipTests 則表示打包時不執行測試用例,但會編譯對應的測試用例輸出到相應的class文件至target/test-classes目錄下 maven :package 一般是將當前maven項目打包後輸出到Target目錄下,如下圖所示: 技術分享圖片 maven : install 則會將當前項目打包到對應的maven倉庫中,如圖 技術分享圖片
-------------------------------------------2018-5-14修改---------------------------------------- 在打包為jar包的時候,一般是會將src/main/java和src/main/resources下的文件打包到jar中,從目錄的生成角度來看則只是將WEB-INF下的classes數據進行了打包,其中包含class文件和resources的配置文件,如下圖截圖所示: 技術分享圖片 ,對於webapp中的靜態文件卻一般不會被打包到jar文件中,那麽既然一般不會將靜態文件打包到jar包中,那麽阿裏的Druid的jar包中是如何包含靜態文件的呢?相信用過Druid作為項目的鏈接池的都清楚,Druid中內置的有圖形化頁面展示可以查看項目中的數據庫連接狀態,請求url的反應快慢等信息,那麽在正常jar打包不能包含靜態資源文件的同時,Druid的jar中是如何包含靜態文件的呢?看其源碼便可知,
技術分享圖片 Druid jar中的文件形式為,META-INF和com包以及support的包結構,其中比較有意思的是,靜態的html文件則是放置到support的包下面的,即druid的jar形式中,html的靜態資源文件並不是放置到webapp下的,而是直接根據classpath路徑直接放到java的包下面的, 即src/main/java下面除了有java文件外還存放的有html靜態資源文件,所以在打包為jar包後,則才會存在有靜態的資源文件存在,那麽第二個問題則是,Druid按照上述所展示的文件路徑方式來看的話,的確是可以正常存儲靜態資源文件的,那麽對於所產生出的日誌信息,Druid中是如何記錄的?1. druid中將所產生的日誌信息,存儲到json文件中,在html展示數據的時候,動態的從json文件中取出數據進行展示,2. 由於druid長期的使用過程當中,會產生很多的日誌數據,此時也可以配置druid的日誌數據到對應的數據庫中,方便查詢和匯總,此時則需要配置部分的druid的文件,可參考github上的說明,github算是比較官方的介紹了。 Druid https://github.com/alibaba/druid
  1. 通過打開Druid的監控頁面-->再打開瀏覽器的調試模式netWork查看當前頁面的發出請求,可以看到頁面有請求當前項目路徑下的 ***.json 如datasource.json文件中的數據,然後再進行了數據的渲染,
  2. Druid中的內置監控頁面,下方會有一個廣告是內嵌的image src為遠程的src地址圖片,在圖片的下放有幾個友情鏈接: 技術分享圖片 其中,melin.iteye.com是對應一個博客鏈接,裏面有一些很不錯的文章可以進行參考。
  3. 關於META-INF文件夾的作用和解釋:https://www.cnblogs.com/demingblog/p/5653844.html https://blog.csdn.net/meijory/article/details/53573140
  4. https的解釋:https://blog.csdn.net/luocn99/article/details/39777707 也是來源於上述所提到的melin.iteye.com的博客中看到的 感覺很不錯,記錄下來。
-------------------------------------------2018-5-14修改結束---------------------------------------- Log4j2的配置文件,log4j2.xml一般是放置到classpath目錄下,即可自動讀取該路徑下的該配置文件,不過可以在web.xml中配置log4j2的配置文件路徑,但一般遵守規則和約定則直接放到classpath下即可, log4j2的配置文件名稱一般為, 1. 配置文件命名與存儲位置(Log4J沒有默認的配置文件) 系統選擇configuration文件的優先級如下(放在src文件夾): classpath下名為 log4j-test.json 或者log4j-test.jsn文件 classpath下名為 log4j2-test.xml classpath下名為 log4j.json 或者log4j.jsn文件 classpath下名為 log4j2.xml classPath所對應的具體路徑是指的: 1) src不是classpath,WEB-INF/classes,lib才是classpath,WEB-INF/是資源目錄, 客戶端不能直接訪問。 2) WEB-INF/classes目錄存放src目錄java文件編譯之後的class文件,xml、properties等資源配置文件,這是一個定位資源的入口。 3) lib和classes同屬classpath,兩者的訪問優先級為: lib>classes。 參考鏈接: https://www.cnblogs.com/hafiz/p/6170702.html http://www.cnblogs.com/hafiz/p/6160298.html https://blog.csdn.net/womeng2009/article/details/53510913 apache-官網地址 http://logging.apache.org/log4j/2.x/manual/webapp.html 針對Web.xml版本為2.5和3.0的log4j2的不用配置的設置,在apache的log4j2的官網中也有說明, English 不太好的可以翻譯後查看,意思相對差不多,分別是針對web.xml版本為3.0時,可以設置 isLog4jAutoInitializationDisabled為true,表示不自動加載log4j2的配置, 其2也是很重要的一點是,如果設置為不自動加載log4j2的配置則必須要將配置文件放到 Spring的加載文件之前,否則如果使用的不是web.xml 3.0的版本,且isLog4jAutoInitializationDisabled設置為false,即自動加載那麽將會出現一些啟動時的錯誤,以及日誌文件輸出時找不到等錯誤,如果使用的是,web.xml 3.0的版本,且isLog4jAutoInitializationDisabled為false自動加載,則此時關於 Listener和 Filter相關的配置則不需要在web.xml中配置,因為在sevlet3.0以上會被log4j.web-2.4.1.jar自動初始化,所以 哦,如果servlet版本不達標,則要手動的配置log4j2的一些監聽和過濾器即可嘍。下面提供一些參考鏈接 技術分享圖片 servlet2.5時的log4j2的配置, https://blog.csdn.net/u012397189/article/details/51564824 針對servlet3.0版本時的log4j2配置, https://www.cnblogs.com/yoyotl/p/4920073.html ,不過一般我覺得還是無論servlet版本為多少,不過log4j2必須要求servlet版本大於2.4才ok, 但是我覺得只要servlet版本大於2.4,即2.5或者3.0更高,我建議還是手動的在web.xml中配置一下 log4j2的一些配置才是最好,比如指定log4j2的名稱,配置為不可自動初始化加載log4j2,配置一下 log4j2的過濾器,監聽等參數比較好一些,具體可以參考 smart-sh的配置lou le,

技術分享圖片

版權聲明


作者:Arnold zhao

出處:博客園Arnold的技術博客--https://www.cnblogs.com/zh94/

您的支持是對博主最大的鼓勵,感謝您的認真閱讀。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留任何追究法律責任的權利。

1 - smart(Maven:Package,Install,&,Log4j2)