我试图使用logback中的“totalSizeCap”元素限制最大日志文件数。我正在使用spring boot应用程序,所以包括如下的logback:
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<include resource="log4j/logback-${spring.profiles.active}.xml"/>
</configuration>
的log4j /的logback-DEV.xml
included>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/tmp//log/log.out</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/tmp/log/log_%d{yyyy-MM-dd}.%i.out</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>1</maxHistory>
<totalSizeCap>2MB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="com.company" level="INFO" />
<logger name="org.springframework" level="ERROR" />
</included>
ERROR
ERROR in ch.qos.logback.core.joran.spi.Interpreter@17:27 - no applicable action for [totalSizeCap], current ElementPath is [[configuration][appender][rollingPolicy][totalSizeCap]]
我如何限制日志文件?
答案 0 :(得分:0)
我的猜测是,logback.xml
不适合指定您想要的内容。相反,您应该使用logback-spring.xml
文件。这是因为在ApplicationContext之前加载了Logback框架(以便上下文可以记录一些初始内容),然后上下文加载logback-spring.xml
以在应用程序剩余的时间内更改logback设置运行。因此我的猜测是${spring.profiles.active}
不会被活动配置文件替换。
如果可能,我们建议您使用
-spring
变体 记录配置(例如logback-spring.xml
而不是logback.xml
)。如果您使用标准配置位置,Spring 无法完全控制日志初始化。
在回答这个问题时进一步阅读,有一节特别围绕Logback extensions。看起来您需要在配置中使用<springProperty>
元素来公开属性。
<springProperty scope="context" name="activeProfile" source="spring.profiles.active" defaultValue="DEV"/>
<include resource="log4j/logback-${activeProfile}.xml"/>