我在我的war文件lib文件夾中部署了logback,並且在classes文件夾中有以下logback.xml。Tomcat WAR - 將Logback配置爲在路徑中使用應用程序名稱
<?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}
評估戰爭文件的當前名稱。
所以,如果我的web應用程序的文件夾看起來像這樣
webapps
- myapp.war
- myapp-dev.war
的${destination}
屬性myapp.war將評估爲.../logs/myapp
和MYAPP-dev.war將評估爲.../logs/myapp-dev
。有沒有JNDI屬性或我可以訪問的appName訪問?我想避免不得不手動重新配置記錄器。
謝謝!
我不知道有這樣做的方法。 JULI(Tomcat的內置日誌記錄)有一個增強請求:https://issues.apache.org/bugzilla/show_bug.cgi?id=43682 –
這是一篇關於這個問題的另一個解決方案的博客文章:https ://0x0a14.de/adding-the-context-root-to-a-logback-config-file-path/ –