Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j配置(基于大小)不工作_Java_Log4j_Rollingfileappender - Fatal编程技术网

Java Log4j配置(基于大小)不工作

Java Log4j配置(基于大小)不工作,java,log4j,rollingfileappender,Java,Log4j,Rollingfileappender,我有我的应用程序,下面的条目是在Log4j属性文件中完成的。基于大小的滚动不适用于此应用程序。 文件不会以5 MB的速度滚动,应用程序会继续记录并以GB为单位。在一次运行中,大约生成6MB的日志。应用程序每天运行多次 有人能帮我指出我犯的错误吗 # SampleApp configuration log4j.category.com.ibm.hmel.hwmmphdya=INFO, SampleApp log4j.additivity.com.ibm.hmel.hwmmphdya=false

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

有人能帮我指出我犯的错误吗

# 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

试着给你的尺码增加一个单位

MaxFileSize=5242880KB

正如我所见,您正在使用lo4j companion extras。 请确保您使用的是最新的log4j.jar(版本1.2.17适合我,并且我遇到了版本1.2.14的问题)

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

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);
        }
    }
}
并将以下
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
我的结果还可以,我想,这些是我的日志输出目录的内容:

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
2013-02-27 09:30。
2013-02-27  09:30              ..
2013-02-27 09:30 440 720样本应用程序01.log
2013-02-27 09:30 5 242 920示例_APP_01.log.1.zip
2013-02-27 09:30 5 242 920示例_APP_01.log.2.zip
2013-02-27 09:30 5 242 920示例_APP_01.log.3.zip
2013-02-27 09:30 5 242 920示例_APP_01.log.4.zip
2013-02-27 09:30 5 242 920示例_APP_01.log.5.zip
文件大小“5 242 920”与配置的大小差不多

您可以通过提供
-Dlog4j.debug
系统属性来进一步排除故障

更新:
您可能希望确保类路径中存在配套的附加库(
apache-log4j-extras-1.1.jar

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

请检查您是否包含并使用或至少超过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

有关酒店的详细信息,请查看

Hi Christian,据我所知,它不应该有效果。但我已经尝试使用5MB,然后它也不起作用。感谢Pawel的努力。我有相同的版本,即1.2.17,apache log4j extra也存在。我很惊讶,同样的东西对你起作用,以及它的意图。我正在尝试按照你提到的进行调试。如何您是否提供配置属性?在我的示例应用程序中,我依赖于默认“log4j.properties”的自动发现。也许在您的例子中,类路径上有许多相同的命名属性文件,其中一个缺少滚动appender?我认为,如果您的应用程序有一些第三方jar依赖项,其中包含它们自己的log4j.properties文件,或者当它在app server的控制下运行时(它可以有单独的记录器配置,该配置在类路径上早于您的自定义配置),这可能会很棘手。如果使用-Dlog4j.debug选项运行,您将看到使用了哪些log4j.properties。