Program Club

R에 대한 표준 로깅 패키지가 있습니까?

proclub 2020. 11. 11. 20:53
반응형

R에 대한 표준 로깅 패키지가 있습니까?


R에 대한 표준 (있는 경우) 로깅 패키지와 일부 샘플 사용을 찾고 있습니까?

또한 나열된 패키지 중 아무것도 표시되지 않습니다. http://cran.r-project.org/web/packages/


방금 loggingCRAN에 패키지를 제출했습니다 . 이는 이전 버전의 '무효 한'패키지 (Brian Lee Yung Rowe 저)의 일부를 기반으로합니다.

logging패키지를 찾습니다 .

표준 파이썬 logging패키지를 모방 하지만 사용하기로 결정한 경우주의하십시오. 또한 R-Forge의 패키지 홈 페이지는 몇 가지 가능한 사용 세션을 가리 킵니다 .

모든 피드백은 관심을 가지고 읽힐 것입니다!


현재 로깅을위한 네이티브 라이브러리 는 아직 없습니다 . 그러나 CRAN에서 사용할 수있는 네 가지가 있습니다.

1) 로깅
-단순 및 log4j와 유사
-표준 Python 라이브러리와 유사 (해당 문서를 지침으로 사용)
-작성자가 2010 년에 시작, 2012 년에 '성숙'
-WLOGSolutions에서 채택
-적극적으로 유지

2) futile.logger (권장! 나도 사용하고 있음)
-적극적으로 유지 관리 -json
오류 로깅 지원
-Python의 로깅 및 log4j와 유사한 의미
-복잡 할 수 있음

3) log4r-
쉽고 log4j와 유사
-2014 년부터 유지되지 않음

4) luzlogr-
초간단-(파일 열기, 쓰기, 닫기)


futile.logger패키지를 제안합니다. 형식화 된 출력 문자열로 여러 계층 적 로거를 구현하고 출력을 다른 방식으로 보낼 수 있습니다. 또한 패키지 당 로거를 자연스럽게 구현합니다.


내장 (패키지 기반) 기능은 "경고", "메시지", "중지"입니다. 이러한 기능은 여러 언어를 지원합니다. 파일에 기록하려면 "sink"와 함께 이러한 기능을 사용할 수 있습니다.

RSeek로 검색하면 로거 기능으로 패키지가 무용지물이되었습니다.


저는 2014 년 6 월에 logR 프로젝트를 시작했습니다. 처음에는 csv 및 DBI / RODBDC / RJDBC 데이터베이스에 기록 할 수있는 예외 처리 기능이있는 R 프로세스 로거였습니다.
2.1 버전부터는 로그 백엔드로 PostgreSQL 만 지원하도록 전환했습니다.
postgres 데이터베이스에서 단일 테이블을 정렬 할 수 있다면 logR을 쉽게 사용할 수 있습니다.

업스트림 저장소github 미러 .

일부 logR 기능 :

  • 트랜잭션 로깅 : 로그 삽입, 표현식 평가, 로그 업데이트
  • postgres 데이터베이스에 기록
  • 오류, 경고, 메시지, 인터럽트 기록
  • 로그 프로세스 메타 데이터 : 인 / 아웃 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 단위 테스트에서 찾을 수 있습니다.


나는 아무것도 알지 못하기 때문에 다음 며칠 안에 log4j에 대한 래퍼를 릴리스하려고했습니다 (당분간 테스트했습니다). 사용 가능할 때 알려 드리겠습니다.


logging및에 비해 더 간단한 대안 futile.logger:

log4r( cran , github )

log4r 패키지는 광범위하게 에뮬레이션 된 log4j API를 기반으로 R 로그인에 대한 깨끗하고 가벼운 객체 지향 접근 방식을 제공하기위한 것입니다. 아래 예제 코드는 로거가 실제로 출력을 간단한 일반 텍스트 로그 파일로 인쇄하는 데 사용되는 방법을 보여줍니다.

참고 URL : https://stackoverflow.com/questions/1928332/is-there-any-standard-logging-package-for-r

반응형