每个日志条目带有时间戳的 log4j

Posted

技术标签:

【中文标题】每个日志条目带有时间戳的 log4j【英文标题】:log4j with timestamp per log entry 【发布时间】:2010-09-26 08:55:55 【问题描述】:

这是我的日志输出

INFO main digestemails - process inbox
INFO main digestemails - checking for emails in c:\development\DCMail\email\KN-Source
INFO main digestemails - digesting 003d01c95a7b_3446880_0202fea9@xxxx.com.eml
INFO main digestemails - extracting attachments
INFO main digestemails - no attachments or no attachments supported
INFO main digestemails - updating database
INFO main digestemails - email -> COMPLETED folder
INFO main digestemails -  

我想要每条日志消息的时间戳,即

INFO 2008-12-25 13:14:00 digestemails - email -> COMPLETED folder

这是我的 log4j 配置文件

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=c:\\development\\DCMail\\logs\\digestlogfolder\\digest-logfile.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

我该怎么做?

【问题讨论】:

【参考方案1】:

在您的 PatternLayout 中使用 %d

%d 也可以采用%ddd MMM yyyy HH:mm:ss,SSS 中的格式模式,您可以选择所需的元素。省略格式模式时,日期将采用 ISO8601 格式。

【讨论】:

只是补充一点,我想让我的类签名更小,所以我使用了%ddd MMM yyyy HH:mm:ss,SSS %-4r [%t] %-5p %c1 %x - %m%n1 只打印 c,而不是类签名的 a.b.c。【参考方案2】:

我的属性文件的摘录

log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p (%t) [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=C:/log/client.log
log4j.appender.logfile.MaxFileSize=5MB
log4j.appender.logfile.MaxBackupIndex=0
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

【讨论】:

【参考方案3】:

您可以在 log4j javadoc 中找到更多转换字符的用法。例如,http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

【讨论】:

以上是关于每个日志条目带有时间戳的 log4j的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本每天创建带有时间戳的文件夹并推送时间戳生成的日志

python 带有日志文件时间戳的路径

从表中选择最新的带时间戳的值,该表对于一个列 id 有多个条目,对于每个唯一的列 id 和来自另一个表的数据

带有时间戳的音频和视频同步

如何为每个键值选择具有最新时间戳的行?

如何为每个 ID 获取具有 max(TIMESTAMP) 的行? [复制]