有沒有辦法在加載之前將數據或設置傳遞給log4j,然後在配置文件中使用該屬性。在加載之前將屬性傳遞給log4j
我是假設有一個系統屬性,我可以使用:
log4j.appender.R.File =在/ usr /本地/ PFS /日誌/ $ {} ws.host /log4j.log
其中ws.host是我想要使用的屬性。
但我該如何設置該值?
此外,我在一個網絡環境。我怎麼知道在log4j加載之前在什麼時候設置屬性設置。
有沒有辦法在加載之前將數據或設置傳遞給log4j,然後在配置文件中使用該屬性。在加載之前將屬性傳遞給log4j
我是假設有一個系統屬性,我可以使用:
log4j.appender.R.File =在/ usr /本地/ PFS /日誌/ $ {} ws.host /log4j.log
其中ws.host是我想要使用的屬性。
但我該如何設置該值?
此外,我在一個網絡環境。我怎麼知道在log4j加載之前在什麼時候設置屬性設置。
默認的log4j PropertiesConfigurator支持變量替換。
所以,你可以通過這樣的"-DmyProject.logFile="/temp/test.log"
系統屬性到Java啓動,然後在文件中有"log4j.appender.R.File=${myProject.logFile}"
屬性。
如果在網絡環境下工作,您可能需要查看Spring的Log4jConfigListener。它使用監聽器(Servlet API 2.4+)在其他組件之前初始化log4j。即使不使用Spring,也應該能夠使用源代碼來輕鬆創建自己的偵聽器。
它可以在這裏幫助您使用不同於log4j.properties的log4j配置文件名,然後在代碼中設置log4j.configuration之後顯式調用PropertyConfigurator。這使您可以更好地控制log4j配置序列。它需要您以前不使用任何記錄器 - Logger類型的靜態最終變量在這裏也存在問題... – 2015-11-09 08:19:52
你是說通過代碼或通過命令行參數設置它? – aperkins 2010-10-22 15:04:48
我在網絡環境中。我希望我可以在代碼System.properties.put()中設置log4j設置?然後在我的log4j文件中設置配置。 – 2010-10-22 15:12:51