2010-06-04 57 views
18

我想我的web應用程序登錄到這個路徑文件: 的webapp /日誌/log4j的相對文件路徑

我可以設置在log4j.properties文件的絕對路徑,但生產環境的目錄結構會有所不同。 有什麼辦法可以做到嗎?

這裏是我該怎麼做:

log4j.appender.f=org.apache.log4j.RollingFileAppender 
log4j.appender.f.layout=org.apache.log4j.PatternLayout 
log4j.appender.f.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.appender.f.File=log.out 
log4j.appender.f.MaxFileSize=100KB 

這是打印日誌到我的eclipse目錄文件名爲log.log(C://蝕)。 我正在使用Tomcat 6.

+0

是啊,對不起 – Bob 2010-06-04 15:48:38

回答

34

log4j能夠擴展系統屬性,因此如果您的生產環境爲您希望放置日誌文件的目錄設置屬性,則可以從log4j引用它。屬性文件。

例如,我們也在Tomcat上部署webapps。 Tomcat設置一個名爲catalina.base的系統屬性,它指向Tomcat的基本目錄。一個log4j的配置看起來像這樣:

log4j.appender.f.File = ${catalina.base}/logs/myapp.log 

將導致myapp.log文件被存儲在日誌目錄下的Tomcat的安裝目錄。

+0

非常感謝! – Bob 2010-06-04 15:48:07

+5

在Debian(包括Ubuntu)上,$ {catalina.home}無處可去,因爲它指向/ usr/share/tomcat6,它沒有鏈接到/ var/log/tomcat6。您的日誌文件將不會被創建。 $ {catalina.base}指向/ var/lib/tomcat6,它有一個名爲logs的鏈接到/ var/log/tomcat6並且是要使用的鏈接。希望這可以幫助某人。 – 2013-08-05 18:06:08

2

log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = $ {的catalina.home} /logs/myapp.log
log4j.appender.A1.DatePattern =」 -yyyy-MM-dd'.log'

在本例中,您當前的日誌文件將被命名爲「myapp.log」。在午夜(或第一天的日誌條目在第二天發生時),「myapp.log」將重命名爲「myapp-yyyy-mm-dd.log」(例如,
「myapp-2010-12-21.log 「)和一個新的」myapp.log「將被創建。

10

其所能爲:
log4j.appender.f.File = ./myapp.log

。代表當前文件夾(通常是項目根文件夾)。這也適用於不同的操作系統。如果您使用$ {catalina.home},您可能不會通過tomcat運行Web應用程序。

這篇文章幫我辦理這個問題:
http://www.matjazcerkvenik.si/Site/Java::Log4j_Properties.html(更新鏈接http://www.matjazcerkvenik.si/developer/java-log4j.php

乾杯!

+2

默認情況下它不是已經是當前文件夾嗎? (即,將「/」前置到路徑上將沒有區別) – golimar 2015-03-24 17:34:01