【发布时间】:2012-05-05 19:34:23
【问题描述】:
我的 war 文件 lib 文件夹中部署了 logback,并且 classes 文件夹中有以下 logback.xml。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property name="destination" value="${catalina.base:-./temp}/logs/${appName:-myapp}" />
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${destination}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${destination}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- Keep logs for 7 days -->
<maxHistory>7</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="error">
<appender-ref ref="ROLLING" />
</root>
</configuration>
在第 3 行,我有一些变量替换为我的日志文件创建路径。
<property name="destination" value="${catalina.base:-./temp}/logs/${appName:-myapp}" />
我想让 ${appName} 评估为部署的战争文件的当前名称。
如果我的网络应用程序文件夹看起来像这样
webapps
- myapp.war
- myapp-dev.war
myapp.war 的 ${destination} 属性将评估为 .../logs/myapp,而 myapp-dev.war 将评估为 .../logs/myapp-dev。是否有 JNDI 属性或我可以访问以访问 appName 的东西?
我想避免手动重新配置记录器。
谢谢!
【问题讨论】:
-
我不知道这样做的方法。对此 JULI(Tomcat 的内置日志记录)有一个增强请求:issues.apache.org/bugzilla/show_bug.cgi?id=43682
-
这是一篇关于此问题的另一种解决方案的博文:0x0a14.de/adding-the-context-root-to-a-logback-config-file-path