log4j:当前时间,以毫秒为单位

时间:2012-08-01 10:31:14

标签: java log4j

log4j.properties我可以设置PatternLayout,例如("[%p] %c - %m - %d %n")

是否有任何符号(%something)以毫秒为单位返回当前时间?

4 个答案:

答案 0 :(得分:21)

你可以试试这个。

log4j.appender.appender_name.layout=org.apache.log4j.PatternLayout
log4j.appender.appender_name.layout.ConversionPattern=%d %p [%c] - %m%n

日期参数%d。例如:%d{HH:mm:ss,SSS}

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

答案 1 :(得分:20)

没有Log4J符号完全符合您的要求。

%d返回具有给定模式的当前日期,该模式由SimpleDateFormat(您在括号之间放置的模式)定义,但不会以毫秒为单位给出时间。

%r给出自执行开始以来的毫秒数

实现你想要的东西的一种可能方法是扩展Log4j的行为,它有点复杂,但是如果它绝对必要......在这里你去:

Customize log4j(编辑:不再在线?)
Customize log4j(编辑:2018替代)

修改: 请记住,从您的评论中,如果您需要确定不同机器中执行之间的时间差异,您必须确保机器的时钟是同步的,否则它将导致您得出错误的结论。

答案 2 :(得分:10)

试试这个,

   %d{dd MMM yyyy HH:mm:ss,SSS}

答案 3 :(得分:2)

您应该能够%d{UNIX_MILLIS}使用%d{UNIX}

  

%d{UNIX_MILLIS}以秒为单位输出UNIX时间。 const MongoStore = require('connect-mongo')(session); mongoose.Promise = require('bluebird'); const connection = mongoose.createConnection(config.dbhost, function(err){ if(err){ console.log(err); } else { console.log('connected to the database successfuly.'); } }); /* Session config */ var expiryDate = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000) // 7 days app.use(session({ secret: config.secureHasherKey , resave: true, saveUninitialized: false, cookie: { secure: false, httpOnly: true, domain: 'site.com', path: '/', expires: expiryDate }, store: new MongoStore({ mongooseConnection: connection }) })); 以毫秒为单位输出UNIX时间。 UNIX时间是UNIX的差异,以秒为单位,UNIX_MILLIS以毫秒为单位,当前时间与UTC时间1970年1月1日午夜之间。虽然时间单位是毫秒,但粒度取决于操作系统(Windows)。这是输出事件时间的有效方法,因为只进行从long到String的转换,不涉及Date格式。