我在 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
它工作正常,但我需要做以下事情:
而是将日志记录输出打印到控制台中我希望它写在 mylog.log 文件中。我该怎么办?
实际上,记录行具有以下形状:
21406 [main] DEBUG utility.Mailer - (mailer) MESSAGGIO INVIATO
在此记录行的开头,究竟代表 21406 字符串的是什么?如何在记录行的开头打印当前日期和时间?
Tnx
答案 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
模式。