logback的配置文件在類路徑中找到,因此是Eclipse-project-specific,這不是我想要的。我使用多個Java實用程序,它們全部駐留在單個項目中(共享類路徑),並且我需要爲其中的一些使用特定的配置。如何在單個項目中使用具有logback的多個配置?
我試過變量替換和Joram配置器,但沒有爲我工作。這很可能是我的錯,我有一天會解決它,但現在我需要一個簡單的解決方案。
logback的配置文件在類路徑中找到,因此是Eclipse-project-specific,這不是我想要的。我使用多個Java實用程序,它們全部駐留在單個項目中(共享類路徑),並且我需要爲其中的一些使用特定的配置。如何在單個項目中使用具有logback的多個配置?
我試過變量替換和Joram配置器,但沒有爲我工作。這很可能是我的錯,我有一天會解決它,但現在我需要一個簡單的解決方案。
選項1:使用logback.configurationFile系統屬性指定logback配置文件的位置。這實際上允許您爲每個項目配置多個配置文件。根據logback documentation,此屬性的值可以是URL,類路徑上的資源或應用程序外部文件的路徑。例如:
-Dlogback.configurationFile=/path/to/config.xml
選項2:使用變量替換通過系統屬性設置日誌文件的名稱。例如:
<file>/var/tmp/${mycompany.myapplication}.log</file>
-Dmycompany.myapplication=SomeUtility
OPTION 3:使用系統屬性設置記錄器級別。這將允許您記錄更多/更少。例如:
<logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
-Dmycompany.logging.level=INFO
方案4:
<appender-ref>
,在ref
值更改爲自己<appender>
S的一個,當然是: <if condition="property("mycompany.logging.console").equalsIgnoreCase("true")"> <then><appender-ref ref="STDOUT"/></then></if>
-Dmycompany.logging.console=true
關於系統性能,你把它們傳遞給Java作爲-D
參數,例如
java -Dmy.property=/path/to/config.xml com.mycompany.MyMain
好的清單!另一種選擇:logback支持編程配置。如果應用程序中的差異點是主類,那麼這些類可以自己配置logback。 –
什麼是你需要的不同部分的「特定配置」? –
沒有什麼真正的「特殊」......在一些實用工具中,我需要記錄更多,而在其他實用工具中我需要記錄更少。這對我來說是最重要的部分。我也想在不同的文件中重定向輸出(最好是基於主類)。 – maaartinus
這聽起來像你應該能夠從一個配置文件管理它。我不確定你的問題中「Eclipse-project-specific」的意思。你能澄清你究竟是什麼? –