0

我正在为 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 未定义?将应用程序路径放入文件附加程序是否有更好的选择?

谢谢你。

4

3 回答 3

3

可以将变量设置为通过 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}

于 2013-05-02T21:12:02.083 回答
0

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

试试这样:

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

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

于 2013-04-29T16:05:37.090 回答
0

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

这里还讨论了这样做的方法:http: //logback.10977.n7.nabble.com/Externalized-Logback-configuration-for-web-applications-td3629.html

于 2013-05-02T20:19:32.273 回答