我在使用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
答案 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
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