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
Log4j configuration(Size Based) not working
提问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.properties
in 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.debug
system 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
类路径中存在伴随的额外库 ( )。