2012-07-31 35 views
0

我希望能夠根據我部署我的Java Web應用程序的服務器在不同的級別進行登錄。例如,在我的測試服務器上,我想登錄DEBUG級別,在我的生產服務器上,我想登錄WARN級別。目前我的log4.xml文件位於我的WAR文件中。我希望能夠使用Tomcat上下文參數來配置我的Web應用程序的日誌記錄級別。這可能嗎?我可以使用Tomcat上下文參數配置Log4j嗎?

我已經看到可以使用環境變量和系統屬性。例如,獲得解釋$ {catalina.home}。這個功能是否可用於替換Tomcat上下文參數值?

例如,這將是的log4j.xml片段:

<level value="${log.level}" 

log.level在%TOMCAT_HOME%/ CONF/context.xml中定義:

<Parameter name="log.level" value="DEBUG" /> 

我已經嘗試了以上,它似乎並沒有工作。 Google沒有爲我在log4j配置文件中使用上下文參數提供任何幫助。我發現this SO question使用系統屬性做類似的事情,但它不使用Tomcat的上下文參數,所以它不是我想要的。在log4j配置中是否可以使用上下文參數值替換功能?我是否需要探索其他選項,例如使用外部log4j.xml文件?

回答

1

我不認爲Log4J本身就是這樣做的。我記得Spring Web Framework帶有一個通過web.xml配置的監聽器,可能會做一些類似的事情。如果你真的想,我想你可以抓住代碼,並用它來創建一些完全想要的東西。

+0

我們最終使用外部日誌配置文件使用[Log4jWebConfigurer](http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/util/Log4jWebConfigurer.html )和log4jConfigLocation屬性的文件值,如file:/path/to/log4j.xml。後來我們決定切換到Logback,我們使用了Spring Extension for Logback,它有一個類似的屬性叫做logbackConfigLocation。這使我們可以爲我們部署的不同環境使用不同的配置文件。 – BennyMcBenBen 2012-09-28 02:39:47

0

我最近使用的一種方法是對日誌進行極爲細粒度的控制,它是log4 appender。這比編輯你的配置文件要多一點工作,但給你一個難以置信的靈活性。請參閱我的回答here以獲取有關如何配置其中之一的快速示例。

相關問題