log4j.xml 配置DefaultRolloverStrategy
时间: 2023-11-27 09:04:32 浏览: 98
在log4j.xml中配置DefaultRolloverStrategy,可以通过设置属性来控制日志文件滚动策略。以下是一个示例配置:
```xml
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{yyyy-MM-dd}.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
```
其中DefaultRolloverStrategy的max属性控制最大的文件滚动次数。在这个示例配置中,最多会保留10个日志文件。当达到这个限制时,最早的文件将被删除,以便为新文件腾出空间。
相关问题
log4j2.xml中如何获得spring.application.xml值
在log4j2.xml中,可以使用以下方式获取Spring配置文件中的值:
1. 在log4j2.xml中引入Spring配置文件:
```xml
<Configuration status="WARN">
<Properties>
<Property name="log-path">${spring.application.logPath}</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${log-path}/app.log"
filePattern="${log-path}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
```
2. 在Spring配置文件中定义`spring.application.logPath`属性,并将其注入到log4j2.xml中:
```xml
<bean id="logProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="spring.application.logPath">/var/log/myapp</prop>
</props>
</property>
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="logProperties"/>
</bean>
```
这样,在log4j2.xml中就可以通过`${spring.application.logPath}`来获取`/var/log/myapp`这个值了。
springboot中log4j2.xml中如何获得spring.application.xml值
在log4j2.xml文件中,可以使用`${spring:application:name}`获取Spring Boot应用程序的名称,`${spring:profiles:active}`获取当前激活的Spring配置文件,`${sys:log4j2.logDir}`获取系统环境变量中名为log4j2.logDir的值。这些变量可以用于配置日志输出的位置、格式、级别等。例如:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="${sys:log4j2.logDir}/myapp.log"
filePattern="${sys:log4j2.logDir}/myapp-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
```
在上面的例子中,`${sys:log4j2.logDir}`获取的是系统环境变量中名为log4j2.logDir的值,可以将日志输出到指定的目录下。
阅读全文