Log4j2 快速入门 —— 定期/定大小生成日志文件(三)

Log4j2 对于生成日志文件时,可以通过对<File>中的<Policies>进行设置,来完整日志文件各种生成方案

定期生成日志文件

log4j2.xml

<Configuration status="WARN" monitorInterval="300">  
    <properties>
        <property name="LOG_HOME">user/logs</property>
    </properties>
    <Appenders>  
        <RollingRandomAccessFile name="logfile" fileName="${LOG_HOME}/app.log" 
                            filePattern="${LOG_HOME}/app-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            
            <Policies>  
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />  
            </Policies> 
            
        </RollingRandomAccessFile>  
        <DefaultRolloverStrategy max="20"/> 
    </Appenders>
    
    <Loggers>  
        <Root level="debug">  
            <AppenderRef ref="logfile" />  
        </Root>  
    </Loggers>  
</Configuration>

此时日志按天数产生,及每天产生一个新的日志文件,其中关键的地方在于 <RollingRandomAccessFile> filepattern属性和<TimeBasedTriggeringPolicy> 的设置;

<RollingRandomAccessFile > filepattern 中的日期格式精确位数决定了生成日志的日期单位,<TimeBasedTriggeringPolicy> interval 决定该单位下的间隔数,如果在上面例子中 interval 设置为 5,那么就是5天生成一个日志;

如果按月生成日志,那么 filePath 修改为 ${LOG_HOME}/app-%d{yyyy-MM}.log

按小时生成日志,filePath =  ${LOG_HOME}/app-%d{yyyy-MM-dd-HH-mm}.log

上面例子中的 <DefaultRolloverStrategy max="20"/> 用于设置符合同个filePath的日志文件的最大数量,超过这个数量时,新产生的日志文件会覆盖旧的日志文件,没有设置时,默认值为7;

定大小生成日志文件

log4j2.xml

<Configuration status="WARN" monitorInterval="300">  
    <properties>
        <property name="LOG_HOME">user/logs</property>
    </properties>
    
    <Appenders>  
        <RollingRandomAccessFile name="logfile" fileName="${LOG_HOME}/app.log"
                                 filePattern="${LOG_HOME}/error-%i.log">
                                 
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />  
            
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
        </RollingRandomAccessFile>
        
        <DefaultRolloverStrategy max="20"/>
    </Appenders>
    
    <Loggers>  
        <Root level="debug">  
            <AppenderRef ref="logfile" />  
        </Root>  
    </Loggers>  
</Configuration>

其中 <SizeBasedTriggeringPolicy size="10 MB" /> 用于设置单个日志文件的大小上限,<RollingRandomAccessFile> filepattern 中的 "%i" 输出文件的次序,<DefaultRolloverStrategy> 设置设置符合同个filePath的日志文件的最大数量;


赞(52) 打赏
未经允许不得转载:优客志 » JAVA开发
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏