Je cherche le paquet standard (s'il y en a un) de journalisation pour R, et quelques exemples d'utilisation ?
Je n'en vois pas non plus parmi les paquets énumérés : http://cran.r-project.org/web/packages/
Je cherche le paquet standard (s'il y en a un) de journalisation pour R, et quelques exemples d'utilisation ?
Je n'en vois pas non plus parmi les paquets énumérés : http://cran.r-project.org/web/packages/
Je viens de soumettre un logging
Il est basé sur certaines parties d'une ancienne version du paquet 'futile' (par Brian Lee Yung Rowe).
Vous trouvez le logging
paquet :
Il imite la méthode standard de python logging
mais soyez prudent si vous décidez de l'utiliser. J'ai également essayé de le documenter par l'exemple, la page d'accueil du paquet sur R-Forge pointe vers quelques exemples possibles d'utilisation du paquet. sessions d'utilisation .
Tout commentaire sera lu avec intérêt !
À propos, j'ai récemment ajouté un gestionnaire qui permet d'envoyer des enregistrements à un sentinelle serveur.
@Spacedman, oui, d'une manière ou d'une autre, il a été supprimé. Un utilisateur l'a noté et a demandé aux mainteneurs du CRAN, me mettant dans le cc. Je ne me suis pas encore occupé de ce problème.
Pour l'instant, il y a encore pas de bibliothèque native pour la journalisation. Mais il y en a quatre disponibles sur CRAN :
1) journalisation
- simple & log4j-like
- ressemble à la bibliothèque standard de Python (utilise cette documentation comme ligne directrice)
- L'auteur a commencé en 2010, il est arrivé à maturité en 2012.
- adopté par WLOGSolutions
- activement maintenu
2) futile.logger (recommandé ! Je l'utilise également)
- maintenir activement
- supporte l'enregistrement des erreurs en json
- sémantique similaire à celle de l'enregistrement de Python, ainsi que de l'enregistrement de type log4j.
- peut être compliqué
3) log4r
- facile et semblable à log4j
- non entretenu depuis 2014
4) luzlogr
- supersimple - (ouvrir, écrire, fermer un fichier)
Je suggère que le futile.logger
il met en œuvre plusieurs enregistreurs hiérarchiques avec des chaînes de sortie formatées et vous pouvez envoyer la sortie de différentes manières. Il implémente aussi naturellement les loggers par paquet.
Futile préfère le style de nommage venant de C/C++, quand j'ai essayé, j'ai manqué une distinction claire logger/handler, entre-temps ça s'est sûrement amélioré, mais je ne l'ai pas testé à nouveau. J'ai proposé ma coopération (et partagé mon travail) pour la production d'un paquet, la réponse est arrivée tardivement pour mes besoins professionnels, et je l'ai perçue comme un "je travaille dessus, quand j'aurai fini je partagerai le résultat avec vous". C'est peut-être la principale différence : futile est sur CRAN, logging sur github, r-forge, CRAN.
@mariotomo : futile.logger
est également sur GitHub maintenant : github.com/muxspace/futile.logger et il semble être entretenu activement. En effet, il serait préférable d'avoir un paquet de logging.
Les fonctions intégrées (base du paquet) sont "warning", "message", "stop". Ces fonctions supportent plusieurs langues. Si vous voulez enregistrer dans un fichier, vous pouvez utiliser ces fonctions avec "sink".
La recherche avec RSeek a fait apparaître le paquet futile avec une fonctionnalité de logger.
futile semble intéressant. Si j'ai bien compris, il ne met pas (encore) en œuvre l'ensemble de la structure logger/handler comme dans Python et Java.
J'ai commencé le projet LogR en juin 2014. Initialement, il s'agissait d'un logger de processus R avec gestion des exceptions capable de loguer vers des bases de données csv et DBI/RODBDC/RJDBC.
A partir de la version 2.1, je ne supporte plus que PostgreSQL comme backend pour les logs.
Si vous êtes capable d'organiser une seule table dans une base de données postgres, vous pouvez facilement utiliser logR.
En amont repo y miroir github .
Certaines des caractéristiques de LogR :
Il faut RPostgreSQL
y data.table
paquets.
Utilisation :
# 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
Plus d'exemples peuvent être trouvés dans les tests unitaires de logR.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.