2012-06-19 36 views
5

我使用http://logback.qos.ch/如何讓logback讀取一個名稱是變量的屬性文件?

我正在我的java程序使用例如-Dproperties.url=myappproperties-production.properties-Dproperties.url=myappproperties-development.properties取決於它在運行environemnt參數

問題:如何使的logback拿起我的屬性文件?

如果屬性文件名是靜態的,我會做(工作正常):

<configuration> 
    <property resource="myappproperties-development.properties" /> 
    (...) 
</configuration> 

但我需要的東西是動態的(這不起作用):

<configuration> 
    <property resource="${properties.url}" /> 
    (...) 
</configuration> 

回答

4

資源文件的值可以是屬性本身。換句話說,

<configuration debug="true"> 
    <property resource="${properties.url}" /> 
    (...) 
</configuration> 

應該工作。 BYW,將<configuration>元素的debug屬性設置爲true以查看控制檯上的logback內部消息。你使用的是哪個版本的logback?

+0

問題是,'和''無法處理URL例如'file:/// path/to/my。 properties'。他們只能處理文件的路徑。我提出了一個問題[http://jira.qos.ch/browse/LOGBACK-711](http://jira.qos.ch/browse/LOGBACK-711)。 –

+0

確實有效 - 起初我失敗了,但我必須有一個錯字。對我來說重要的是,即使文件名屬性是從屬性文件加載的,它也可以工作。但我真正的理由是調試設置。這是一個提示,我希望我昨天知道! – Rhubarb

+0

對我來說沒有效果,相反,這個工作完美,由Spring文檔推薦:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html – Sohail

0

如果屬性url值以引號括起來,你將如何處理? 例如

-Dproperties.url="myappproperties-production.properties" 

我只是嘗試這樣做,並沒有工作

我之所以這樣問是因爲亞馬遜AMI在Amazon彈性魔豆的最新版本增加了引號周圍的屬性值 - 即使用戶犯規指定這

0

這是Spring推薦方式:

<configuration> 

    <springProfile name="local"> 
     <!-- configuration to be enabled when the "local" profile is active --> 
     <property resource="application-local.properties" /> 
    </springProfile> 

    <springProfile name="dev"> 
     <!-- configuration to be enabled when the "dev" profile is active --> 
     <property resource="application-dev.properties" /> 
    </springProfile> 

</configuration> 

參考文檔:​​

相關問題