簡體   English   中英

log4j.xml配置的公共變量

[英]common variable for log4j.xml configuration

我有這樣的log4j.xml配置:

<appender name="MyAppender"class="org.apache.log4j.DailyRollingFileAppender">   
     <param name="File"     value="/logs/custom/my.log"/>
...  
 </appender>

但是我的文件的根目錄對於很多appender都是一樣的。 有沒有辦法將“/ logs / custom /”定義為變量,並在我的所有appender中重用它。

謝謝,

肖恩

在XML中也可以定義一個變量並在doc的其余部分重用它:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" [
  <!ENTITY logHome "/logs/folder1/folder2">
]
>

然后,引用剛定義的這個變量,作為&logHome;

<param name="File" value="&logHome;/folder3/my.log"/>

那個怎么樣?

(我相信我不久前在這個鏈接上了解了XML實體引用: http//www.ibm.com/developerworks/xml/library/x-tipentref/index.html

更新 :原始答案適用於Log4j 1.x.

Log4j 2.x對配置文件中的屬性有更豐富的支持,請參閱Log4j手冊,了解有關配置屬性的信息

Log4j 1.x(原始答案):

使用log4j.xml時實現類似功能的唯一方法是在啟動時設置系統屬性,然后從log4j.xml引用該屬性。

在啟動時,您可以設置系統屬性:

java -Dlog_dir=/var/logs/custom     com.yourorg.yourapp.Main

或者在運行時以編程方式設置它(在初始化Log4j之前):

System.setProperty("log_dir", "/var/logs/custom")

然后你可以像這樣引用它:

<appender name="MyAppender"class="org.apache.log4j.DailyRollingFileAppender">   
     <param name="File" value="${log_dir}/my.log"/>
     ...  
</appender>

或者在屬性文件中,如下所示:

log4j.appender.MyAppender.File = ${log_dir}/my.log

來源:我從log4j xml配置中使用系統環境變量得到了這個答案的靈感。

此外,如果您在Tomcat下運行,則可以使用${catalina.home}變量,如下所示:

<appender name="MyAppender"class="org.apache.log4j.DailyRollingFileAppender">   
     <param name="File" value="${catalina.home}/logs/my.log"/>
     ...  
</appender>

我不相信這可以使用XML配置,但它是在.properties文件配置中:

mysubdir = /logs/custom
...
log4j.appender.MyAppender.File = ${mysubdir}/my.log

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM