我正在为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未定义?将应用程序路径放到文件追加器有没有更好的选择?
谢谢。
答案 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