2010-09-03 67 views
3

在Websphere 7.0上使用Log4J RollingFileAppender時,如何指定log4j.properties文件中日誌記錄目錄的位置,即選取Websphere的LOG_ROOT變量?以獨立於平臺的方式指定Websphere中的日誌文件位置

+1

你的意思是* log4j.appender。 file.File = $ {LOG_ROOT} logs/log4j.log *? – JoseK 2010-09-03 08:19:03

+0

@JoseK:可悲的是,這似乎並不奏效。 Websphere變量不能作爲系統屬性訪問,這是我知道Log4J用來替換這種佔位符。 – 2010-09-03 08:28:56

回答

1

當然,編寫RollingFileAppender的自定義子類會非常簡單,它以平臺無關的方式編程確定LOG_ROOT變量值。

如果是這樣,它可能只需要大約十幾行代碼。隨後跟進,

<appender name="CustomAppender" class="path.to.your.CustomAppender"> 
      <param name="File" value="fileNameOnly.out" /> 
      <param name="Append" value="true" /> 
      <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="%m%n" /> 
      </layout> 
    </appender> 

,讓子類接受文件參數,得出LOG_ROOT路徑,並調用父類方法之前將其附加到文件名。

我希望以某種方式幫助,

-gMale

4

你必須指定其可以使用WebSphere變量JVM自定義屬性的選項。

JVM定製屬性可以在您的log4j.properties中使用。

查找下面對實現某些指令相同的:

在管理控制檯的路徑將是:

應用程序服務器>服務器名稱>進程定義> Java虛擬機>定製屬性

Customer屬性可以使用WebSphere變量作爲我們定製屬性的值--KeyForMyCustomProperty。 WebSphere變量將使用標準模式:$ {}

E.g $ {MY_VARIABLE}

log4j屬性文件可以通過

log4j.appender.messageAppender.File = $ {} KeyForMyCustomProperty /Message.log

這種做法是不能直接訪問該自定義屬性,但達到了預期的效果。您可以選擇使用相同的密鑰,作爲JVM自定義屬性在WebSphere變量則表現爲,如果WebSphere變量在log4j.properties

使用HTH Manglu

相關問題