R有标准的日志包吗?

时间:2009-12-18 13:54:52

标签: logging r

我正在寻找R的标准(如果有)日志包,以及一些示例用法?

我也没有在列出的软件包中看到任何软件包:http://cran.r-project.org/web/packages/

7 个答案:

答案 0 :(得分:45)

我刚刚向CRAN提交了一个logging包。它是基于旧版“无效”包装的某些部分(Brian Lee Yung Rowe)。

您找到了logging包:

它模仿标准的python logging包,但如果你决定使用它,请小心。我还试图通过示例来记录它,R-Forge上的包主页指向了几个可能的usage sessions

有兴趣阅读任何反馈意见!

答案 1 :(得分:20)

目前,还有没有本机库用于记录。但CRAN上有四种可用:

1)记录
  - 简单& log4j的样
  - 类似于标准的Python库
  - 自2013年以来没有维护,上面检测到一些问题

2) futile.logger (推荐!我也在使用它)
  - 积极维护   - 支持json错误记录
  - 与Python的日志记录以及类似log4j的类似语义   - 可能很复杂

3) log4r
  - 容易和log4j类似   - 自2014年以来未维护

4) luzlogr
  - supersimple - (打开,写入,关闭文件)

答案 2 :(得分:14)

我建议使用futile.logger包,它使用格式化的输出字符串实现多个分层记录器,您可以以不同的方式发送输出。它还自然地实现了每个包的记录器。

答案 3 :(得分:8)

内置(包基)功能是“警告”,“消息”,“停止”。这些功能支持多种语言。如果您想要登录文件,也许您可​​以将这些功能与“接收器”一起使用。

使用RSeek进行搜索,使得记录器功能无法实现。

答案 4 :(得分:3)

我在2014年6月启动了logR项目。最初它是一个R进程记录器,具有异常处理能力,可以登录到csv和DBI / RODBDC / RJDBC数据库。
从2.1版本开始,我已经切换到仅支持PostgreSQL作为日志的后端 如果您能够在postgres数据库中安排单个表,那么您可以轻松使用logR。

上游repogithub mirror

一些logR功能:

  • 事务日志记录:插入日志,评估表达式,更新日志
  • 登录postgres数据库
  • 记录错误,警告,消息,中断
  • 日志流程元数据:in / out nrow,灵活的自定义元数据列表
  • 高精度计时,可选microbenchmarkCore
  • 支持并行处理
  • 分层日志 - 记录父日志ID(2.1.5中的新内容)

它需要RPostgreSQLdata.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单元测试中可以找到更多示例。

答案 5 :(得分:2)

我不知道任何,所以我准备在接下来的几天内为log4j发布一个包装器(我已经测试了一段时间了)。我会告诉你它何时可用。

答案 6 :(得分:2)

loggingfutile.logger相比更简单的替代方案:

log4rcrangithub

  

log4r包旨在提供一种干净,轻量级的面向对象的方法来记录R,大致基于广泛模拟的log4j API。下面的示例代码显示了如何在实践中使用记录器将输出打印到简单的纯文本日志文件。