2012-08-13 42 views
0

我使用JMSAppender發送日誌記錄事件。在Receiver我需要把它們打印/放入一個文件 - 使用日期格式:如何從LoggingEvent獲取ISO格式的時間?

yyyy-MM-dd HH:mm:ss,SSS 

,但我只能做event.getTimeStamp()返回long

(我覺得很奇怪,因爲在常規的記錄,使用%d我們無法登錄毫秒當前時間)

有沒有辦法從登錄事件得到ISO格式的日期?

+0

http://stackoverflow.com/questions/905666/how-to-format-to-a-specific-pattern-with-log4j?rq=1 – adarshr 2012-08-13 11:04:45

+0

@adarshr我不能在'properties'文件中設置它。我使用JMSAppender,併發送** events **。 – alicjasalamon 2012-08-13 11:07:46

回答

1

你可以試試這個

DateFormat dformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS"); 
String dateString = dformat.format(new Date(event.getTimeStamp()); 
System.out.println(dateString); 
+0

我試過了,它的工作原理,謝謝!這是否耗時? (如果我有很多日誌可能是一個問題) – alicjasalamon 2012-08-13 11:27:15

+0

您可以讓DataFormat初始化一次並重用它,我想。但我不確定它可能不是線程安全的。那麼你有多少個線程用於記錄?萬一你有多個池記錄線程..也許你可以將DataFormat定義爲一個ThreadLocal變量並開始。取決於你如何使用它。 – 2012-08-13 11:35:11

+0

我的想法是收集JMSAppender從分佈式系統發送的一些日誌,並將它們傳遞給文件/數據庫/控制檯/日誌查看器。可能我可以以毫秒爲單位存儲日期,但我的日誌查看器(ChainSaw)無法處理這種格式。 – alicjasalamon 2012-08-13 11:39:24

相關問題