Log4j 保存到文件问题
Log4j save to file issues
我在使用 log4j
创建日志文件并保存到其中时遇到问题。控制台附加器工作正常,但我无法让它创建日志或将日志保存到文件中。
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
根据 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
根记录器选项
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
将日志消息定向到标准输出
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} %-5p %c{1}:%L - %m%n
尝试同时使用控制台和 file.If 进行日志记录,您在控制台中看到了一些东西,但没有看到创建的文件,然后确保您的程序对您的日志目录具有写入权限
感谢大家的帮助。我终于成功了。
如果其他人 运行 遇到同样的问题,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
我觉得 log4j.properties 中有重复的行。
一旦删除其中之一并检查
log4j.rootLogger=INFO, con
我在使用 log4j
创建日志文件并保存到其中时遇到问题。控制台附加器工作正常,但我无法让它创建日志或将日志保存到文件中。
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
根据 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
根记录器选项
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
将日志消息定向到标准输出
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} %-5p %c{1}:%L - %m%n
尝试同时使用控制台和 file.If 进行日志记录,您在控制台中看到了一些东西,但没有看到创建的文件,然后确保您的程序对您的日志目录具有写入权限
感谢大家的帮助。我终于成功了。
如果其他人 运行 遇到同样的问题,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
我觉得 log4j.properties 中有重复的行。
一旦删除其中之一并检查
log4j.rootLogger=INFO, con