我正在为 Glassfish 服务器开发 Java Web 应用程序。我在设置文件附加器的路径时遇到问题。我想使用 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 未定义?将应用程序路径放置到文件附加器是否有更好的选择?
谢谢。
最佳答案
可以将变量设置为值 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}
。
关于java - 文件附加器中 web.xml 的 logback 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274692/