1. 程式人生 > >web專案Log4j日誌輸出路徑配置問題

web專案Log4j日誌輸出路徑配置問題

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配置檔案。
實現分析:一般實現上面需求,需要在修改完war包名稱之外要再做下面配置:
1、修改每個例項名下web.xml中引數webAppRootKey為不同值。同一個tomcat下執行多個web應用時,該值相同的話,執行時會拋異常。

webAppRootKey
webApp.root

2、log4j配置檔案日誌輸出路徑修改
log4j配置檔案中路徑配置一般有三種方法:
(1)絕對路徑法:直接配置為系統覺得路徑;
(2)相對路徑法:
log4j.appender.logfile.File=../logs/app.log,將日誌記錄到tomcat下的logs資料夾;
log4j.appender.logfile.File=logs/app.log,將日誌記錄到tomcat的bin目錄下的logs資料夾;
(3)使用環境變數相對路徑法:程式會優先找jvm環境變數,然後再找系統環境變數,來查詢配置檔案中的變數。
log4j.appender.logfile.File=u

ser.dir/logs/app.log使tomcat{user.dir}對應tomcat的bin目錄;
log4j.appender.logfile.File=user.home/logs/app.log{user.home}對應作業系統當前使用者目錄;
log4j.appender.logfile.File=webApp.root/logs/app.log{webApp.root}對應當前應用根目錄;

暫時沒找到不修改log4j配置而實現上面需求的方法。在log4j配置檔案中可以獲取環境變數來配置,但變數裡沒有當前應用的名稱(不能直接通過webApp.root,因為它在不同的例項名稱不一樣),嘗試在web.xml中增加listener,獲取應用名稱,然後呼叫System.setProperty(“contextPath”, sce.getServletContext().getContextPath());將上下文設定到系統變數中在log4j應用,但多例項執行時每個例項都會改變該屬性值。
結論,該問題的解決方法:
1、手動修改配置,修改war名稱後手動修改web.xml和log4j配置檔案,實現上述需求。
2、通過其它程式來進行批量修改,若bat或maven等在修改war包名稱時,自動修改掉web.xml和log4j中相關配置。

相關推薦

web專案Log4j日誌輸出路徑配置問題 問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的文

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配置檔案。 實現分析:一般實現上面需求,需要在修

web專案Log4j日誌輸出路徑配置問題

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配

java專案啟動失敗1:web專案的訪問根路徑配置問題導致無法連線資料來源,server檔案被強制改變

環境:eclipse+Tomcat 錯誤:時間過得有點久,好像是專案啟動失敗,無法連線資料來源,還是啟動後無法訪問頁面來著 問題發現:除錯了很久才發現,Servers中的server.xml中的Context的path屬性是要配置成空的,如下圖。 但是專案啟動的時候

關於web專案log日誌指定輸出檔案位置配置

首先我們定義一個可以在執行時動態的找出專案的路徑WebAppRootKey,這麼做的原因是為了在後面配置log4j輸出檔案路徑的時候能隨心配置。 <context-param> <param-name>webAppRo

log4j日誌輸出到文件的配置

imp 名稱 1.0 sql apach warn ring source util 1.Maven的dependency 2.log4j.properties的配置 3.Junit的Test類 4.web.xml的配置(非必要) 5.spring的db.config的配置

l配置log4j完成日誌輸出配置檔案log4j2.xml詳解

一、配置檔案節點解析    (1)根節點Configuration有兩個屬性:status和monitorinterval,有兩個子節點:Appenders和Loggers(表明可以定義多個Appender和Logger). status用來指定log4j本身的列印日誌的級別.

Spark配置log4j日誌輸出

################################################################################  #①配置根Logger,其語法為:  #  #log4j.rootLogger = [level],appen

Tomcat連線池,以及 Webservice配置,以及log4j日誌輸出

用java寫的webservice,建立資料庫連線的時候,因為webservice介面要供很多使用者使用,這時如果把資料庫連線語句寫在使用者呼叫的我方的方法裡面,在方法裡面用完再關閉,也可以。但是用tomcat連線池,一開始就申請25個連線放著,最多50個(這個25和50都

idea配置application context(web專案的預設訪問路徑

idea的application context   eclipse大家應該都用過,eclipse訪問專案的路徑一般是localhost:8080/projectName, 當把IDE換成idea以後,訪問路徑一般情況下就變成了localhost:8080,路

log4j 日誌分類級別配置

class col %d ger app 輸出 分類 ogg code 將日誌的error和info分別打印輸出,以便於查看### set log levels ### log4j.rootLogger=info,error,info log4j.appender.st

log4j日誌輸出使用_1

詳細 per lsm sdc org gbm rpm veh mil 轉自https://www.cnblogs.com/sky230/p/5759831.html Log4j是幫助開發人員進行日誌輸出管理的API類庫。它最重要的特點就可以配置文件靈活的設置日誌信息的優

web 專案運用通用的xml配置

jdk10的轉換: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</mav

HAProxy 日誌輸出配置

正所謂,沒有軟體敢說沒有bug,人無完人,software is  not perfect software。是軟體就可能存在bug,那麼如果出現bug,我們就要分析對我們業務的影響及可能如何避免bug的再現。 HAProxy也不例外,也可能在特殊場景下出現bug,因此我們就有必要記錄下必要的日誌

log4j 日誌輸出級別

一共分為五個級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,明白這一點很重要,這裡Log4j有一個規則:假設設定了級別為P,如果發生了一個級別Q比P高,則可以啟動,否則遮蔽掉。

Spring 筆記 -05- 建立 Maven Web 專案 + Tomcat 及目錄結構配置

Spring 筆記 -05- 建立 Maven Web 專案 + Tomcat 及目錄結構配置 之前的專案熟悉 Spring,並沒有 Web 的部分,下面介紹在 IDEA 中,建立 Maven Web 專案,以及配置目錄結構。 建立 Maven Web 專案 開啟 Intel

IDEA配置web專案、部署Tomcat、配置maven

剛開始學習使用IDEA配置web專案,經過同事的幫助和網上的教程,結合自己的實踐,將IDEA 配置web專案、部署Tomcat、配置maven三部分內容做一個總結。 一、配置web專案 使用命令列將git專案clone下來,用intellij idea im

JAVA Tomcat Log4j 日誌輸出到檔案

工程引用     Log4j.jar    要輸出日誌的類中引用     import org.apache.log4j.Logger;     import org.apache.log4j.PropertyConfigurator; 建立log4j.prope

WEB專案-向頁面輸出中文亂碼的問題

  1.向頁面輸出中文有亂碼問題。         * ServletOutputStream getOutputStream()          獲取輸

Java web專案跨域請求 xml配置

在web專案開發過程中,跨域請求是再經常不過的事了,剛開始在google搜了一大圈,各種辦法非常多,但是都是比較疏散,經過除錯配置也是沒通過,最終如下程式碼是可以的,寫下來方便日後理解。 <fi

getResourceAsStream()在web專案中獲取不到配置檔案的原因

問題:使用Object.class.getResourceAsStream()在web專案中獲取不到配置檔案,單純java應用程式測試卻可以,放在web專案中就報空指標。 1.先放出來目錄 2.java應用程式測試沒有問題 3.當放入web專案執行後直接顯示