log4j.xml配置檔案中引入變數
我一聽,就不太贊成這種做法了。對於開發與運維都是一撥人,經常需要和其它開發人員交流的情況,修改Tomcat自身的配置比較麻煩。
為什麼這麼說呢?
Tomcat是系統級的程式,而我們的程式碼是應用級的程式。開發者,對自己的應用程式,一般是掌控度非常高的,但是對於Tomcat等不是自己寫的系統程式,把控度比較低。Tomcat的隨便一行啟動程式碼,不小心改錯了,就啟動不了了。
修改Tomcat還有壞處,本地開發、線上部署、交接給其它客戶,還得讓客戶去修改Tomcat這個和咱們的程式無關的配置,是不科學的。
我的建議是,把這些配置,放在外圍,寫入個檔案,比如startupTomcat.sh,在啟動的時候指定引數。每個人都可以很靈活地修改log4j等配置引數。
初步商議,我們採用這種做法。
總結下:
<appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${log4jOutputPath}/front/default.log" /><!-- 設定日誌輸出檔名 --> </appender>
啟動的時候,增加VM引數,-Dlog4jOutputPath=c:/log4j----------------------------------------------------------------------------------------------------------
第2種做法,適合開發和運維都是同一人的情況,把log4j的變數,放在Web.xml裡,部署的時候,需要手動修改這個變數。
log4j配置
可在web.xml中配置log4j.xml的位置,引數名稱為:log4jXmlPath。
也可以,配置log4j的日誌輸出位置的目錄,引數名稱為:log4jOutputPath。
<servlet>
<servlet-name>Log4jInit</servlet-name>
<servlet-class>cn.fansunion.common.web.Log4jInit</servlet-class>
<init-param> <param-name>log4jXmlPath</param-name> <param-value>C:/log4j.xml</param-value> </init-param>
<init-param> <param-name>log4jOutputPath</param-name> <param-value>C:/log4j/xiaolei2</param-value> </init-param>
<load-on-startup>0</load-on-startup>
</servlet>
注意:這2個引數都必須輸入絕對地址,如果log4jXmlPath沒有值,或者對應的檔案不存在,將把classpath下的log4j.xml作為預設配置檔案。如果再找不到,將報錯,log4j配置失敗。
如果log4jOutputPath沒有值,或者對應的檔案不存在,將把classpath下的log4j資料夾作為預設的輸出目錄。
- Author:
- [email protected] 2015年1月8日
Java程式碼 Log4jInit.java
public class Log4jInit extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
// 從web.xml中找到log4j的輸出目錄
String log4jOutputPath = config.getInitParameter("log4jOutputPath");
// 預設的日誌輸出位置
if (StringUtils.isBlank(log4jOutputPath)) {
log4jOutputPath = Log4jInit.class.getClassLoader().getResource("")
.getFile()
+ "/log4j";
}
File log4jOutputPathFile = new File(log4jOutputPath);
// 如果輸出檔案不存在,手動建立
boolean log4xmlFileExists = log4jOutputPathFile.exists();
if (!log4xmlFileExists) {
System.out.println(log4jOutputPathFile.mkdirs());
}
// log4j.xml檔案中的變數是在這裡設定的
System.setProperty("log4jOutputPath", log4jOutputPath);
// 從web.xml中找到log4j.xml的輸出目錄
String log4jXmlPath = config.getInitParameter("log4jXmlPath");
boolean exist = false;
// 如果在web.xml手動配置,log4jXmlPath應該使用絕對地址,否則,就使用預設的位置和檔名就行
if (StringUtils.isNotBlank(log4jXmlPath)) {
File file = new File(log4jXmlPath);
exist = file.exists();
}
// log4jXmlPath預設位於classpath下log4j.xml
if (!exist) {
URL resource = Log4jInit.class.getClassLoader().getResource(
"log4j.xml");
if (resource != null) {
log4jXmlPath = resource.getFile();
}
}
DOMConfigurator.configure(log4jXmlPath);
}
}
----------------------------------------------------------------------------------------------------------
相關推薦
log4j.xml配置檔案中引入變數
Boss最初建議,修改Tomcat的啟動指令碼,在裡面增加變數配置,比如“-Dlog4jOutputPath=c:/log4j”。 我一聽,就不太贊成這種做法了。對於開發與運維都是一撥人,經常需要和其它開發人員交流的情況,修改Tomcat自身的配置比較麻煩。為什麼這麼
在XML配置檔案中使用properties檔案的鍵值作為變數化引數
背景XML檔案中的引數如果寫成固定值,每當有更新的時候需要一個一個的去修改,很麻煩。利用resources下的property檔案可以很方便的在部署執行階段改變一些特定配置屬性,比如資料庫連線等。然後在程式中根據鍵名使用property檔案中的特定屬性。在Spring中也可以
spring xml配置檔案中標籤的含義
例如在spring-config.xml檔案頭看到如下的配置: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.o
log4j.properties,log4j.xml配置檔案的配置示例
log4j.properties日誌檔案的配置一般放在src源目錄下就可以了,下面是具體的配置示例: ### direct log messages to stdout ### log4j.appe
springboot 讀取配置檔案中的變數(通過註解方式)
springboot的application.properties檔案中可以定義一些可配置的常量。在程式中我們不需要再重新的讀取檔案,我們可以直接使用@Value註解讀取配置檔案中的值。首先看一下配置檔案application.properties中的內容是:spring.p
如何獲取web專案hibernate.cfg.xml配置檔案中的資料
有時候想要獲取hibernate.cfg.xml配置檔案中的資料,網路上有很多方法,有的很複雜,這裡我介紹一種很簡單的獲取方法。 hibernate.cfg.xml配置檔案中有連線資料庫所需的各種資訊,比如這裡要獲取connection.url欄位對應的url資料,如下所示
springboot 配置檔案中屬性變數引用方式@@解析
這種屬性應用方式是[email protected][email protected]。 兩個@符號是springboot為替代${}屬性佔位符產生,原因是${}會被maven處理,所以應該是起不到引用變數的作用。 @@方式可以引用springboot非
web.xml配置檔案中的servlet和servlet-mapping
寫了好多小專案後也沒弄明白<url-pattern>的真正意義,寫跳轉的時候也是跳的三心二意的,今天查了一下web.xml的詳細配置,看了看servlet-mapping的講解,豁然開朗,做了做小實驗,原來是這樣,捂臉。下面把看到的文章的servlet片段摘抄過
mybatis的xml配置檔案中使用select語句資料不全
我的資料表裡項很多,但是用mybaits中的xml配置檔案select語句卻只返回了幾句話,之前我的程式碼是這樣的: <select id="selectAll" resultType="entity.Transaction"> selec
Spring學習筆記 在XML配置檔案中使用properties檔案的鍵值
property檔案可以很方便的在部署執行階段改變一些特定配置屬性,比如資料庫連線等。然後在程式中根據鍵名使用property檔案中的特定屬性。在Spring中也可以在XML配置檔案中的Bean定義時通過property檔案動態進行屬性值的定義。 使用方法描述 假如入
MyBatis兩種執行XXXMapper.xml配置檔案中SQL語句的方法
一、SqlSession單例模式類 package cn.mybatis.Sql; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.i
web.xml配置檔案中ContextLoaderListener的作用
在搭建ssm框架的時候,在web.xml配置檔案中配置監聽器listener,它的作用是在啟動web容器時,自動裝配Spring的applicationContext.xml的配置資訊。ContextLoaderListener繼承ContextLoader類,
Spring中applicationContext.xml配置檔案中資料庫資料來源配置
<!-- 標頭檔案,主要注意一下編碼 --> <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework
struts.xml配置檔案中各個標籤的含義,已經知識點記錄
struts.xml中使用<constant name="" value=""></constant>元素進行覆蓋<constant name="struts.devMode" value="true"></constant>這
android manifest.xml配置檔案中的 Service節點
The name of the process where the service is to run. Normally,all components of an application run in the default process created for theapplication. It ha
pom.xml配置檔案中所有標籤及作用簡單描述
我轉載的是關於pom.xml檔案中會使用到的基本上所有的標籤以及標籤的作用簡單描述。 可能我們自己的專案所使用到的標籤總數量不及此文的一半。 我轉載僅為方便你我他學習之用,眾噴子們,還請指下留情,輕噴。 因為此文只是簡單的介紹下所有的標籤,以及標籤的作用。具體我也沒有全部用
eclipse中編輯log4j 的xml配置檔案時,自動提示
方法1. 配置log4j.dtd檔案: Windows -> Preferences -> XML -> XML Catalog 點選 Add.. 新增一個XML Catalog Entry 在彈出的視窗如下配置:
讓Eclipse中spring的xml配置檔案出現屬性和類提示
在spring配置檔案中可以讓配置bean的時候出現提示,這裡需要做一些設定。設定包括安裝springide外掛,spring-beans-version.xsd檔案引入,增加xml編輯提示的字元,預設只有=>:。最後是讓配置檔案可以通過Spring Config Editor的方式開
轉:ssm spring+springmvc+mybatis中的xml配置檔案詳解
這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先 這篇文章暫時只對框架中所要用到的配
JAVA spring 把全域性變數寫到配置檔案中
把一些全域性的引數配置到配置檔案裡面,把全域性屬性注入到類裡面,由程式程式碼直接引用. 普通引入properties方法(只介紹) 在spring的配置檔案applicationContext.xml配置 <bean id= "propertyConfigure