如何在spring引导应用程序中使用log4j2根据大小生成新的日志文件



我使用log4j2生成一个日志文件,但每次达到限制时,我都需要根据大小生成一个新的日志文件。

log4j2.properties文件:

name=PropertiesConfig
property.filename =D:\Users\User\MyFiles\Apache Camel github\ChatServiceProject\logs\propertieslogs.log
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.append=true
appender.file=org.apache.log4j.RollingFileAppender
appender.fileLogger.MaxFileSize=1KB
loggers=file
logger.file.name=Processors
logger.file.level = trace
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = trace
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger= INFO, file, stdout

然而,日志文件的大小现在是16KB,并且它仍然没有生成新文件,而是将日志附加到同一文件中。所以我需要帮助来解决这个问题。谢谢

以下属性可用于覆盖默认配置(application.properties(

logging.logback.rollingpolicy.max-index=10

logging.logback.rollingpolicy.max-file-size=15MB

spring属性可以放在日志xml文件中。

<springProperty scope="context" name="MAX_INDEX" source="logging.logback.rollingpolicy.max-index"/>

<springProperty scope="context" name="MAX_FILE_SIZE" source="logging.logback.rollingpolicy.max-file-size"/>

示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/e2e-tools.${nodename:-local}.log}"/>
<springProperty scope="context" name="MAX_INDEX" source="logging.logback.rollingpolicy.max-index"/>
<springProperty scope="context" name="MAX_FILE_SIZE" source="logging.logback.rollingpolicy.max-file-size" defaultValue="10MB"/>
<appender name="FIX_WINDOW_BASED_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>${MAX_INDEX}</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date{ISO8601} [%thread] %level: %msg%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} [%thread] %level: %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FIX_WINDOW_BASED_FILE"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>

备注:Spring Boot已经定义了一个具有旋转的日志文件(参见log4j2-file.xml(,其大小限制为10 MiB(该限制是硬编码的(。你只需要设置:

logging.file.path=D:\Users\User\MyFiles\Apache Camel github\ChatServiceProject\logs
logging.file.name=propertieslogs.log

在您的application.properties中。

但是,如果您想编写自己的配置文件,则应该考虑使用XML格式:

<Properties>
<Property name="LOG_PATH">D:UsersUserMyFilesApache Camel githubChatServiceProjectlogs</Property>
<Property name="LOG_FILE">${sys:LOG_PATH}/propertieslogs.log</Property>
</Properties>
<Appenders>
<RollingFile
name="LOGFILE"
append="true"
fileName="${sys:LOG_FILE}"
filePattern="${sys:LOG_PATH}/propertieslogs.%i.log.gz">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
<SizeBasedTriggeringPolicy size="1 KB" />
</RollingFile>
</Appenders>

属性格式使用许多任意标识符来模拟XML:的层次结构

property.LOG_PATH=D:UsersUserMyFilesApache Camel githubChatServiceProjectlogs
property.LOG_FILE=${sys:LOG_PATH}/propertieslogs.log
appender.<id1>.type=RollingFile
appender.<id1>.name=LOGFILE
appender.<id1>.append=true
appender.<id1>.fileName=${sys:LOG_FILE}
appender.<id1>.filePattern=${sys:LOG_PATH}/propertieslogs.%i.log.gz
appender.<id1>.<id2>.type=PatternLayout
appender.<id1>.<id2>.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.<id1>.<id3>.type=SizeBasedTriggeringPolicy
appender.<id1>.<id3>.size=1 KB

其中<id1><id2><id3>是您选择的字符串。它们对配置没有影响。

最新更新