Ich suche nach dem Standardprotokollierungspaket (falls vorhanden) für R und einer Beispielverwendung.
Ich sehe auch keine unter den aufgelisteten Paketen: http://cran.r-project.org/web/packages/
Ich suche nach dem Standardprotokollierungspaket (falls vorhanden) für R und einer Beispielverwendung.
Ich sehe auch keine unter den aufgelisteten Paketen: http://cran.r-project.org/web/packages/
Antworten:
Ich habe gerade ein logging
Paket bei CRAN eingereicht . Es basiert auf einigen Teilen einer älteren Version des "vergeblichen" Pakets (von Brian Lee Yung Rowe).
Sie finden das logging
Paket:
Es ahmt das Standard-Python- logging
Paket nach, aber bitte seien Sie vorsichtig, wenn Sie es verwenden möchten. Ich habe auch versucht, dies anhand eines Beispiels zu dokumentieren. Die Pakethomepage auf R-Forge verweist auf einige mögliche Verwendungssitzungen .
Jedes Feedback wird mit Interesse gelesen!
Derzeit gibt es noch keine native Bibliothek für die Protokollierung. Auf CRAN sind jedoch vier davon verfügbar:
1) Die Protokollierung
- einfach und log4j-ähnlich
- ähnelt der Standard-Python-Bibliothek (verwendet diese Dokumentation als Richtlinie)
- der Autor hat sie 2010 gestartet, bis 2012 "ausgereift"
- von WLOGSolutions übernommen
- aktiv gepflegt
2) futile.logger (empfohlen! Ich verwende es auch)
- aktiv warten
- unterstützt die JSON-Fehlerprotokollierung
- eine ähnliche Semantik wie die Python-Protokollierung sowie eine log4j-ähnliche
- kann kompliziert sein
3) log4r
- einfach und log4j-ähnlich
- wird seit 2014 nicht mehr gewartet
4) luzlogr
- supersimple - (Datei öffnen, schreiben, schließen)
stop
/ warning
/ message
, um die Protokollierungsfunktionen direkt zu integrieren
futile.logger
.
Ich schlage das futile.logger
Paket vor, es implementiert mehrere hierarchische Logger mit formatierten Ausgabezeichenfolgen und Sie können die Ausgabe auf verschiedene Arten senden. Es implementiert natürlich auch Protokollierer pro Paket.
logging
Paket von Mariotomo zu vergleichen ?
futile.logger
ist jetzt auch auf GitHub: github.com/muxspace/futile.logger , und es scheint aktiv gepflegt zu werden. In der Tat wäre es besser, ein Protokollierungspaket zu haben .
Die eingebauten (Paketbasis-) Funktionen sind "Warnung", "Nachricht", "Stopp". Diese Funktionen unterstützen mehrere Sprachen. Wenn Sie sich in einer Datei anmelden möchten, können Sie diese Funktionen möglicherweise zusammen mit "sink" verwenden.
Durch die Suche mit RSeek wurde das Paket mit einer Logger-Funktionalität vergeblich.
Eine einfachere Alternative im Vergleich zu logging
und futile.logger
:
Das log4r-Paket soll einen sauberen, leichtgewichtigen objektorientierten Ansatz für die Anmeldung in R bieten, der grob auf der weit verbreiteten log4j-API basiert. Der folgende Beispielcode zeigt, wie der Logger in der Praxis zum Drucken der Ausgabe in eine einfache Klartext-Protokolldatei verwendet wird.
Ich habe im Juni 2014 mit dem logR-Projekt begonnen. Ursprünglich war es ein R-Prozesslogger mit Ausnahmebehandlung, der in CSV- und DBI / RODBDC / RJDBC-Datenbanken protokollieren konnte.
Ab Version 2.1 habe ich gewechselt, um nur PostgreSQL als Backend für Protokolle zu unterstützen.
Wenn Sie in der Lage sind, eine einzelne Tabelle in der Postgres-Datenbank anzuordnen, können Sie logR problemlos verwenden.
Upstream Repo und Github Spiegel .
Einige der logR-Funktionen:
Es erfordert RPostgreSQL
und data.table
Pakete.
Verwendung:
# 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
Weitere Beispiele finden Sie in logR-Unit-Tests.
Mir sind keine bekannt, daher wollte ich in den nächsten Tagen einen Wrapper für log4j veröffentlichen (ich habe ihn jetzt schon eine Weile getestet). Ich werde Sie wissen lassen, wenn es verfügbar ist.