来自文件appender中web.xml的logback值

时间:2013-04-29 08:54:24

标签: java glassfish logback

我正在为Glassfish服务器开发Java Web应用程序。我在设置File appender的路径时遇到问题。我想使用web.xml中定义的变量。

Web.xml中:

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

Logback.xml(在src / main / 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/app-log/client.log

已创建。为什么参数app.myApp-client.home未定义?将应用程序路径放到文件追加器有没有更好的选择?

谢谢。

3 个答案:

答案 0 :(得分: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>

以上应该很好用。此外,您可能还会发现${webAppRootKey}对{{1}}非常有用。

答案 1 :(得分:0)

您正在尝试引用该值而不是参数名称...

试试这样:

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

但我想这会给你/app.myApp-client.home/WEB-INF/app-log/client.log,这也不是你的期望? :)

答案 2 :(得分:0)

有一些关于通过JNDI配置回溯的信息:http://logback.qos.ch/manual/loggingSeparation.html

此外,还讨论了在此处执行此操作的方法:http://logback.10977.n7.nabble.com/Externalized-Logback-configuration-for-web-applications-td3629.html