2013-04-29 78 views
-1

我正在爲Glassfish服務器開發Java Web應用程序。我有問題設置文件appender的路徑。我想使用web.xml中定義的變量。文件appender中web.xml的logback值

web.xml中:

<context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>app.myApp-client.home</param-value> 
</context-param> 

Logback.xml(在SRC /主/ resurces)

<appender name="FILE" class="ch.qos.logback.core.FileAppender">   
    <file>${app.myApp-client.home}/WEB-INF/app-log/client.log</file>   
    <encoder> 
     <pattern>%date %level [%file:%line] %msg%n</pattern> 
    </encoder> 
</appender> 

部署我Glassfish上的日誌文件的應用程序後與名

/app.myApp-client.home_IS_UNDEFINED/WEB-INF /應用程序日誌/ client.log

已創建。爲什麼參數app.myApp-client.home是未定義的?有沒有更好的選擇把文件appender的應用程序路徑?

謝謝。

回答

0

您試圖引用值而不是帕拉姆名稱...

試試這樣說:

<file>${webAppRootKey}/WEB-INF/app-log/client.log</file> 

但我想這會給你/app.myApp-client.home/WEB-INF/app-log/client.log那也沒有你預期? :)

+0

你說得對。我想把我的應用程序的路徑放在服務器上(例如/ home/glassfish/domains/domain1/j2ee-modules/MyApplication) - 是否有任何常量/變量? – user2329752 2013-04-30 07:49:38

+0

在[播放日誌記錄文檔](http://www.playframework.com/documentation/2.0/SettingsLogger)中,'$ {application.home}'怎麼樣? – 2014-05-14 20:40:50

2

是可能的變量設置爲值obtained via JNDI。在你的情況下,你會寫:

<insertFromJNDI env-entry-name="java:comp/env/webAppRootKey" as="webAppRootKey" /> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">   
    <file>${webAppRootKey}/WEB-INF/app-log/client.log</file>   
    <encoder> 
     <pattern>%date %level [%file:%line] %msg%n</pattern> 
    </encoder> 
    </appender> 

上面應該很好地工作。另外,您可能還會發現set a default value${webAppRootKey}有用。