如何将log4j输出打印到日志文件中?

时间:2015-03-04 15:29:29

标签: java java-ee logging log4j

我在 log4j 中相当新,我遇到以下问题。

进入一个简单的Java应用程序我正在使用实际正确地将日志输出打印到控制台(shell)的log4j,我将此配置用于 log4j.properties 文件:

# Define the root logger with appender X:
log4j.rootLogger = DEBUG, consoleAppender

## Set the appender named X to be a console appender:
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender

# Define the layout for console Appender appender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

它工作正常,但我需要做以下事情:

  1. 而是将日志记录输出打印到控制台中我希望它写在 mylog.log 文件中。我该怎么办?

  2. 实际上,记录行具有以下形状:

    21406 [main] DEBUG utility.Mailer  - (mailer) MESSAGGIO INVIATO 
    

    在此记录行的开头,究竟代表 21406 字符串的是什么?如何在记录行的开头打印当前日期和时间?

  3. Tnx

3 个答案:

答案 0 :(得分:1)

您需要将文件追加器添加到log4j配置文件

<强> E.g

log4j.appender.FILE.File=D:/logs/file.log
log4j.appender.FILE.layout=org.apache.log4j.TTCCLayout
log4j.appender.FILE.layout.ContextPrinting=true
log4j.appender.FILE.Threshold=DEBUG

答案 1 :(得分:1)

除了stdout(console)appender之外,还需要一个文件追加器。 当然,您应该使用与控制台相同的模式。 一个这样的例子是:

log4j.rootLogger = INFO, stdout, R

log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d %5p [%t] (%F <<%M>>\:%L) - %m%n
log4j.appender.R.File = /var/www/porject-name/www/logs/project-name.log
log4j.appender.R.MaxFileSize = 100000KB
log4j.appender.R.MaxBackupIndex = 10

答案 2 :(得分:1)

重新。 1 正如Salah和Schaka建议的那样 - 你需要定义一个文件追加器。

重新。 2 在您的控制台追加器中,您已经定义了一个以%-4r开头的模式,其中r表示:

  

用于输出从中经过的毫秒数   构建布局直到创建日志记录事件。

-4部分表示“如果少于4位,则填充正确”。 要显示当前日期和时间,请使用%d模式。

来源:PatternLayout JavaDoc