2017-02-05 12 views
0

爲了便於分析,我想在所有日誌條目中記錄應用程序版本(理想情況下,我希望通過編輯logback-spring.xml文件來完成此操作,而不是編寫任何Java碼)。Logback config - 如何包含Spring應用程序版本

我已經成功記錄了spring應用程序名稱。

注意示例啓動日誌消息,顯示正確的應用程序版本。

根據我的成績構建 - 我正在用正確的實施版本更新清單文件。對於Spring構建執行程序的目的,我還設置info.build.version = $ {version}。

看下面的例子 - 我不知道要放什麼?正確記錄應用程序版本。我嘗試了數字鍵,包括:info.build.version,application.version,spring.application.version等。

<springProperty name="APP_NAME" source="spring.application.name"/> 

<springProperty name="APP_VERSION" source="???"/> 

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern> version=${APP_VERISON} site=${APP_NAME} %msg%n </pattern> 
    </encoder> 
</appender> 

啓動應用程序V1.0.0,快照與PID 14147

+0

這將幫助你:http://stackoverflow.com/questions/3697449/retrieve-version-from- maven-pom-xml-in-code – Barath

+0

您是否在日誌記錄模式中嘗試過使用'$ {info.build.version}'? –

+0

@PiotrGwiazda - 正確我試過$ {info.build.version} – vicsz

回答

2

按照documentation

對於Maven的可以自動擴展的特性Maven項目使用資源過濾。如果您使用春天開機起動父母然後你可以通過@ .. @佔位符「項目屬性」指的是你的Maven

您可以在application.properties添加Maven項目的屬性文件,如

[email protected]@ 

對於搖籃需要通過配置Java插件的processResources擴大從搖籃項目屬性

processResources { 
    filesMatching('application.properties') { 
     expand(project.properties) 
    }  
} 

可以通過佔位符訪問。

app.name=${name} 
app.description=${description} 
app.version=${version} 

您可以使用這些屬性在logback.xml添加

感謝

+0

試過這種方法處理.properties文件,添加xml)..問題是我想除了版本注入春天的應用程序名稱。所以我在.logback文件和$ {APP_NAME} $ {version}中有。 ..在處理資源期間,Gradle將嘗試替換所有$ {}字段,但由於APP_NAME不存在Gradle,因此該進程將失敗 – vicsz

1

如果你已經成功地指導搖籃設置version清單文件,那麼你可以嘗試指示gradle這個更換${version}logback.xml

我不知道搖籃,但Maven的,所以在Maven的:它被稱爲過濾資源,一個我認爲這是在搖籃完全一樣:https://dzone.com/articles/resource-filtering-gradle

+0

不要相信它會工作,當我也嘗試注入我的應用程序名稱的SpringProperty(它與jar文件不同)。 $ {APP_NAME} $ {version} < - 在logback中將失敗,因爲APP_NAME在processResources期間不存在 – vicsz

+0

想通了......它很臭......但我在Logback中使用springProperty來注入實際的Spring Boot Application名稱(不包含包含logback文件的子jar),我使用processResources,並使用/ $轉義$ {APP_NAME),以便processResoruce不嘗試填充它 – vicsz