2015-09-21 78 views
1

我有一個應用程序在R中記錄了一些信息。我正在使用logging庫。我的問題是timestamp沒有毫秒,我並不總是良好的日誌順序。在日誌文件中,R按照正確的順序放置日誌,但我使用logstashes來記錄歷史記錄和進行監視。由於時間戳記我沒有正確的日誌順序,所以我想添加毫秒。在R中打印時間戳毫秒不起作用

我試過使用strptime%OS(n),但它似乎不起作用。如果我添加了%OS,我得到NA即使是簡單的事情:

strptime(Sys.time(), "%H:%M:%OS") 

我已經看到有更多的帖子是這樣,但沒有答案,所以我在這裏張貼了這一點。我不得不說,我在Linux Ubuntu 14.04下使用R 3.2.0。如何解決它?如何在timestamp有毫秒?


OK,使用strftime後,我收到毫秒,但似乎他們總是爲0

我有一個日誌格式化器:

logFormatter <- function(record) { 
    sprintf('Application(%s) %s [%s] [] %s - %s', format(as.hexmode(Sys.getpid()), width = 8), record$levelname, strftime(record$timestamp, "%Y-%m-%dT%H:%M:%OS3"), record$logger, record$msg) 
} 

我已經添加了記錄:

addHandler(writeToFile, logger = "MyLogger", file = "/var/log/Application/logs.log", level = 'INFO', formatter = logFormatter) 

我日誌是這樣的:

loginfo("some info X", logger = MyLogger) 

但輸出似乎在第二的開頭總是:

Application(000018f3) INFO [2015-09-21T11:45:56.000] [] some info 1 
Application(000018f3) INFO [2015-09-21T11:45:58.000] [] some info 2 
Application(000018f3) INFO [2015-09-21T11:45:58.000] [] some info 3 
Application(000018f3) INFO [2015-09-21T11:45:58.000] [] some info 4 
Application(000018f3) INFO [2015-09-21T11:45:59.000] [] some info 5 

回答

1

爲了獲得毫秒信息,則通常會很有幫助設置

options(digits.secs = 3) 

這會給,例如

> strptime(Sys.time(), format = "%Y-%m-%d %H:%M:%OS") 
#[1] "2015-09-21 11:52:09.787 CEST" 

也許這可以幫助你的情況。

3

我使用strftime代替strptime,並且有一個簡單的方法來顯示毫秒如下:

strftime(Sys.time(), format="%Y-%m-%d %H:%M:%OS6") 

將輸出

[1] "2015-09-21 10:32:58.669559" 

這對您有幫助嗎?

+0

謝謝,就是這樣! – sop

+0

er ... nope,我的問題似乎是'記錄$ timestamp',它總是'HH:MM:SS.000'我該如何解決它? – sop

+0

你可以寫一個'record $ timestamp'的例子嗎? – Nikos