Log4j保存到文件问题

时间:2015-10-23 08:19:15

标签: java log4j

我在使用log4j创建日志文件时遇到问题并保存到它。控制台appender工作正常,但我不能让它创建或保存日志到文件。

jar文件位于正确的类路径中,我觉得我已经尝试过所有内容(除了可以使用的内容-_-)

希望你们能帮忙,把头发撕成碎片!

Log4j.properties文件位于程序的根文件夹中。

Log4j.properties文件。

#log4j.rootLogger=TRACE, file
#log4j.rootLogger=DEBUG, file
log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=thisLog.log
#log4j.appender.file.MaxBackupIndex=2
#log4j.appender.file.MaxFileSize=1024KB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%t @ %F:%M:%L] %m%n
log4j.appender.file.ImmediateFlush=true
log4j.rootLogger=INFO, con
log4j.appender.con=org.apache.log4j.ConsoleAppender
#log4j.appender.con.MaxBackupIndex=2
#log4j.appender.con.MaxFileSize=1024KB
log4j.appender.con.layout=org.apache.log4j.PatternLayout
log4j.appender.con.layout.ConversionPattern=%d{ISO8601} %-5p [%t @ %F:%M:%L] %m%n 

Java代码:

static final Logger logger = Logger.getLogger(TgsSim2.class); 

public static void main(String[] args) throws IOException
{
    PropertyConfigurator.configure("log4j.properties");

    logger.info("THIS IS A TEST USING .INFO");
    logger.debug("THIS IS A TEST USING .DEBUG");
    logger.warn("THIS IS A TEST USING .WARN");

    new TgsSim2();

}

工作解决方案:

#Root logger option
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=myLog.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=3
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n

4 个答案:

答案 0 :(得分:2)

感谢大家的帮助。我最终得到了它。

如果有其他人遇到同样的问题,那么执行该技巧的log4j.properties文件就像这样。

#Root logger option
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=myLog.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=3
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{[dd.MM.yyyy] [HH:mm:ss]} %p [%t] %c (%F:%L) - %m%n

答案 1 :(得分:0)

根据apache Log4j手册,您没有正确使用Appender。 的 RollingFileAppender进行 使用log4j.appender.file=org.apache.log4j.RollingFileAppender代替log4j.appender.file=org.apache.log4j.FileAppender 将Log.properties修改为此。

#Root logger option

log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c{1}(%L): - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=myLog.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=3

答案 2 :(得分:0)

根记录器选项

bzip2

将日志消息直接发送到日志文件

log4j.rootLogger=INFO, file, stdout

将日志消息直接发送到stdout

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p    %c{1}:%L - %m%n

尝试使用控制台和文件进行日志记录。如果您在控制台中看到某些内容并且未看到创建的文件,请确保您的程序具有日志目录的写入权限

答案 3 :(得分:0)

我觉得log4j.properties中有重复的行 一旦删除其中一个并检查
log4j.rootLogger = INFO,con