如何使用log4j写入文本文件?

我想知道如何转换以下代码将这些行输出到文本文件,而不是标准输出:

import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class HelloWorld { static final Logger logger = Logger.getLogger(HelloWorld.class); public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); logger.debug("Sample debug message"); logger.info("Sample info message"); logger.warn("Sample warn message"); logger.error("Sample error message"); logger.fatal("Sample fatal message"); } } 

属性文件是:

 log4j.rootLogger=DEBUG, CA log4j.appender.CA=org.apache.log4j.ConsoleAppender log4j.appender.CA.layout=org.apache.log4j.PatternLayout log4j.appender.FA.layout.ConversionPattern=%m%n 

谢谢。

将ConsoleAppender更改为FileAppender。 我觉得有用的一个文件追加器是org.apache.log4j.RollingFileAppender 。 您必须为fileName添加属性,并且可能还想设置maxFileSize。 这是一个示例(将这些放在log4j.properties文件中):

 log4j.appender.NotConsole=org.apache.log4j.RollingFileAppender log4j.appender.NotConsole.fileName=/some/path/to/a/fileName.log log4j.appender.NotConsole.maxFileSize=20MB 

还有其他的追加者。 DailyRollingFileAppender根据时间滚动。 FileAppender不会滚动。 如果使用RollingFileAppender,则必须猜测maxFileSize的良好值,然后在未来日期解决大小问题(如果它导致问题)。

不要使用FileAppender而不是ConsoleAppender。

这是一个简单的配置示例。 它还配置了布局。 您可以省略第一种方法。

 log4j.appender.F=org.apache.log4j.FileAppender log4j.appender.F.File=mylog.log log4j.appender.F.layout=org.apache.log4j.PatternLayout log4j.appender.F.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n 

以下配置应该也可以

将日志消息直接发送到stdout ###

log4j.appender.stdout = org.apache.log4j.FileAppender
log4j.appender.stdout.fileName = error.log中
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =%d {ABSOLUTE}%5p%c {1}:%L – %m%n

在log4j.properties中

 # Define the root logger with file appender log4j.logger.App = DEBUG ,CA #set file text log4j.appender.CA = org.apache.log4j.RollingFileAppender log4j.appender.CA.File = D:\\database.log log4j.appender.CA.maxFileSize = 20MB log4j.appender.CA.MaxBackupIndex=10 log4j.appender.CA.layout=org.apache.log4j.PatternLayout log4j.appender.CA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

以下内容会有所帮助:

包含main方法的类

  package abc; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class ClassOne { static Logger logger = Logger.getLogger(ClassOne.class); public static void main(String[] args) { PropertyConfigurator.configure("log4j.info"); //log4j.info file should be in the class path(same location as ClassOne.class) logger.info("Program started.... "); //Whenever you want to write something to the log text file use logger.info("Log Message") } } 

log4j.info文件

  log4j.rootLogger=INFO, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.FileAppender // Replacing ConsoleAppender with FileAppender gives text file logging # Set the name of the file log4j.appender.FILE.File=src/abc/log.out //Here you can specify either absolute or relative path # Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true # Set the threshold to debug mode log4j.appender.FILE.Threshold=debug # Set the append to false, overwrite log4j.appender.FILE.Append=false # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%d %m%n