java Log4j 配置(基于大小)不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15105694/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 18:29:28  来源:igfitidea点击:

Log4j configuration(Size Based) not working

javalog4jrollingfileappender

提问by Ashu

I have my application for which the below entry is done in Log4jproperties file.Size based rolling is not working for this application. File does not rollover at 5 MB and the application keeps on logging and making it in GB. In one run approximately 6 MB of log is generated.The application runs multiple times a day.

我的应用程序在Log4j属性文件中完成了以下条目。基于大小的滚动不适用于此应用程序。文件不会在 5 MB 时翻转,应用程序会继续记录并以 GB 为单位进行记录。在一次运行中会生成大约 6 MB 的日志。该应用程序一天运行多次。

Can someone help in pointing out where I am doing a mistake?

有人可以帮忙指出我在哪里做错了吗?

# SampleApp configuration
log4j.category.com.ibm.hmel.hwmmphdya=INFO, SampleApp  
log4j.additivity.com.ibm.hmel.hwmmphdya=false  
log4j.appender.SampleApp =org.apache.log4j.rolling.RollingFileAppender  
log4j.appender.SampleApp.File=S:/FIH/LOG/SAMPLE_APP_01/SAMPLE_APP_01.log  
log4j.appender.SampleApp.layout=org.apache.log4j.PatternLayout  
log4j.appender.SampleApp.layout.ConversionPattern=%-21d{dd-MMM-yyyy HH:mm:ss} [%t] %-5p %c %x - %m%n  

log4j.appender.SampleApp.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy
log4j.appender.SampleApp.RollingPolicy.FileNamePattern=S:/HIF/LOG/SAMPLE_APP_01  /SAMPLE_APP_01.log.%i.zip
log4j.appender.SampleApp.RollingPolicy.MinIndex=1
log4j.appender.SampleApp.RollingPolicy.MaxIndex=10
log4j.appender.SampleApp.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
log4j.appender.SampleApp.TriggeringPolicy.MaxFileSize=5242880

回答by Mubashar

Following works for me

以下对我有用

log4j.rootLogger=TRACE, Roller

log4j.appender.Roller=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.Roller.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy  
log4j.appender.Roller.RollingPolicy.maxIndex=13
log4j.appender.Roller.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy  
log4j.appender.Roller.TriggeringPolicy.MaxFileSize=26214400
log4j.appender.Roller.RollingPolicy.FileNamePattern=j_log_%i.log
log4j.appender.Roller.RollingPolicy.ActiveFileName=j_log_0.log
log4j.appender.Roller.layout=org.apache.log4j.PatternLayout
log4j.appender.Roller.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

回答by Ahmad Nadeem

Please check you have included apache-log4j-extras.jarand using log4j-1.2.16.jaror at least above 2.17 version. here is sample log4j.properties which can be used.

请检查您是否包含apache-log4j-extras.jar并使用log4j-1.2.16.jar或至少高于 2.17 版本。这是可以使用的示例 log4j.properties。

    #Worked with 2.17 version
    #make log files rotate based on size and zip old rotated
    log4j.rootLogger=INFO, loggerId
    log4j.appender.loggerId=org.apache.log4j.rolling.RollingFileAppender
    log4j.appender.loggerId.rollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy
    log4j.appender.loggerId.rollingPolicy.maxIndex=5
    log4j.appender.loggerId.triggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
    log4j.appender.loggerId.triggeringPolicy.MaxFileSize=10000000
    log4j.appender.loggerId.rollingPolicy.FileNamePattern=worker-%i.log.gz
    log4j.appender.loggerId.rollingPolicy.ActiveFileName=worker.log
    log4j.appender.loggerId.layout=org.apache.log4j.PatternLayout
    log4j.appender.loggerId.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n

for more details on properties please check here

有关属性的更多详细信息,请查看此处

回答by Christian Rapp

Try adding a unit to your size

尝试为您的尺寸添加一个单位

MaxFileSize=5242880KB

回答by Pawe? Wyrwiński

As i can see you're using lo4j companion extras. Please ensure you're using latest log4j.jar (version 1.2.17 worked for me and I've encountered problems with version 1.2.14).

正如我所看到的,您正在使用 lo4j 配套附加功能。请确保您使用的是最新的 log4j.jar(版本 1.2.17 对我有用,我遇到了版本 1.2.14 的问题)。

I wrote simple test app to reproduce your problem:

我编写了简单的测试应用程序来重现您的问题:

package com.ibm.hmel.hwmmphdya;
import org.apache.log4j.Logger;

public class Roller {

    private Logger logger = Logger.getLogger(Roller.class);
    private final String FAKE_LOG_LINE = "12345678901234567890123456789012345678901234567890";

    public static void main(String[] args) {
        Roller roller = new Roller();
        roller.logStuff();
    }

    private void logStuff() {
        for (;;) { // ugly loop
            logger.info(FAKE_LOG_LINE);
        }
    }
}

and placed following log4j.propertiesin classpath:

log4j.properties在类路径中放置以下内容:

log4j.category.com.ibm.hmel.hwmmphdya=INFO, Roller
log4j.additivity.com.ibm.hmel.hwmmphdya=false
log4j.appender.Roller=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.Roller.File=D:/FIH/SAMPLE_APP_01.log
log4j.appender.Roller.layout=org.apache.log4j.PatternLayout
log4j.appender.Roller.layout.ConversionPattern=%-21d{dd-MMM-yyyy HH:mm:ss} [%t] %-5p %c %x - %m%n
log4j.appender.Roller.RollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy
log4j.appender.Roller.RollingPolicy.FileNamePattern=D:/FIH/SAMPLE_APP_01.log.%i.zip 
log4j.appender.Roller.RollingPolicy.MinIndex=1 
log4j.appender.Roller.RollingPolicy.MaxIndex=10 
log4j.appender.Roller.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
log4j.appender.Roller.TriggeringPolicy.MaxFileSize=5242880

My results are OK i think, theese are contents of my log output directory:

我认为我的结果还可以,这些是我的日志输出目录的内容:

2013-02-27  09:30    <DIR>          .
2013-02-27  09:30    <DIR>          ..
2013-02-27  09:30         4?440?720 SAMPLE_APP_01.log
2013-02-27  09:30         5?242?920 SAMPLE_APP_01.log.1.zip
2013-02-27  09:30         5?242?920 SAMPLE_APP_01.log.2.zip
2013-02-27  09:30         5?242?920 SAMPLE_APP_01.log.3.zip
2013-02-27  09:30         5?242?920 SAMPLE_APP_01.log.4.zip
2013-02-27  09:30         5?242?920 SAMPLE_APP_01.log.5.zip

File size "5 242 920" is more or less what was configured.

文件大小“5 242 920”或多或少是配置的大小。

You can troubleshoot your case further by providing -Dlog4j.debugsystem property.

您可以通过提供-Dlog4j.debug系统属性来进一步解决您的案例。

UPDATE:You may want to ensure companion extras lib (apache-log4j-extras-1.1.jar) is present in classpath.

更新:您可能希望确保apache-log4j-extras-1.1.jar类路径中存在伴随的额外库 ( )。