在R中打印时间戳毫秒不起作用

时间:2015-09-21 09:31:43

标签: r

我有一个应用程序在R中记录一些信息。我正在使用logging库。我的问题是timestamp没有毫秒,而且我并不总是日志的良好顺序。在日志文件中,R按正确顺序放置日志,但我使用logstashes来获取历史记录和进行监视。因为时间戳我没有正确的日志顺序,所以我想添加毫秒。

我尝试使用strptime%OS(n),但似乎没有用。如果我添加%OS,即使是简单的事情,我也会获得NA

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

我看到有更多这样的帖子,但没有答案,所以我也在这里发帖。

我不得不说我在Linux Ubuntu 14.04下使用R 3.2.0。怎么解决?如何在timestamp中使用毫秒?

好的,在使用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

2 个答案:

答案 0 :(得分:3)

我使用strftime代替strptime,并且有一种简单的方法可以显示毫秒,如下所示:

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

将输出

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

这有用吗?

答案 1 :(得分:1)

要获得毫秒信息,设置

通常很有帮助
options(digits.secs = 3)

这将提供,例如

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

也许这会对你的情况有所帮助。