在log4j.properties
我可以设置PatternLayout
,例如("[%p] %c - %m - %d %n")
是否有任何符号(%something)以毫秒为单位返回当前时间?
答案 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格式。