我正在寻找R的标准(如果有的话)日志记录包,以及一些示例用法?
我也看不到列出的软件包中的任何一个:http : //cran.r-project.org/web/packages/
Answers:
此刻,仍然 没有用于记录的本机库。但是在CRAN上有四个可用的:
1)日志记录
-简单且
类似于
log4j-与标准Python库类似(使用该文档作为指南)
-作者于2010年开始编写,2012
年“成熟” -被WLOGSolutions采用
-积极维护
2)futile.logger(推荐!我也在使用它)
-积极维护
-支持json错误日志记录
-与Python日志记录相似的语义以及类似log4j的语义
-可能很复杂
3)log4r-
简单且类似于log4j-
自2014年以来不再维护
4)luzlogr-超简单
-(打开,写入,关闭文件)
futile.logger
。
我建议使用该futile.logger
程序包,它使用格式化的输出字符串实现多个分层记录器,并且您可以采用不同的方式发送输出。它还自然地实现了每包记录器。
logging
包装相比如何?
futile.logger
现在也在GitHub上:github.com/muxspace/futile.logger,并且似乎正在积极维护。确实,最好有一个日志记录程序包。
内置(基于程序包的)功能是“警告”,“消息”,“停止”。这些功能支持多种语言。如果要登录到文件,也许可以将这些功能与“接收器”一起使用。
使用RSeek进行搜索使带有记录器功能的软件包徒劳无功。
我从2014年6月开始执行logR项目。最初,它是一个R进程记录器,具有异常处理功能,能够记录到csv和DBI / RODBDC / RJDBC数据库。
从2.1版本开始,我已切换为仅支持PostgreSQL作为日志的后端。
如果您能够在postgres数据库中安排单个表,则可以轻松使用logR。
一些logR功能:
它需要RPostgreSQL
和data.table
包装。
用法:
# install logR
install.packages("logR", repos = c("https://jangorecki.github.io/logR", "https://cran.rstudio.com"))
# attach logR
library(logR)
# setup connection, default to env vars: `POSTGRES_DB`, etc.
# if you have docker then: docker run --rm -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD=postgres --name pg-logr postgres:9.5
logR_connect()
# [1] TRUE
# create logr table
logR_schema()
# make some logging and calls
logR(1+2) # OK
#[1] 3
logR(log(-1)) # warning
#[1] NaN
f = function() stop("an error")
logR(r <- f()) # stop
#NULL
g = function(n) data.frame(a=sample(letters, n, TRUE))
logR(df <- g(4)) # out rows
# a
#1 u
#2 c
#3 w
#4 p
# try CTRL+C / 'stop' button to interrupt
logR(Sys.sleep(15))
# wrapper to: dbReadTable(conn = getOption("logR.conn"), name = "logr")
logR_dump()
# logr_id logr_start expr status alert logr_end timing in_rows out_rows mail message cond_call cond_message
#1: 1 2016-02-08 16:35:00.148 1 + 2 success FALSE 2016-02-08 16:35:00.157 0.000049163 NA NA FALSE NA NA NA
#2: 2 2016-02-08 16:35:00.164 log(-1) warning TRUE 2016-02-08 16:35:00.171 0.000170801 NA NA FALSE NA log(-1) NaNs produced
#3: 3 2016-02-08 16:35:00.180 r <- f() error TRUE 2016-02-08 16:35:00.187 0.000136896 NA NA FALSE NA f() an error
#4: 4 2016-02-08 16:35:00.197 df <- g(4) success FALSE 2016-02-08 16:35:00.213 0.000696145 NA 4 FALSE NA NA NA
#5: 5 2016-02-08 16:35:00.223 Sys.sleep(15) interrupt TRUE 2016-02-08 16:35:05.434 5.202319000 NA NA FALSE NA NA NA
在logR单元测试中可以找到更多示例。
我什么都不知道,因此我将在接下来的几天内发布log4j的包装器(我已经测试了一段时间)。可用时,我会通知您。