Je dois ajouter un niveau de journal personnalisé comme "verbeux" ou "trafic" à ruby logger, comment faire?Comment ajouter un niveau de journalisation personnalisé à logger dans ruby?
Répondre
Vous pouvez créer votre propre enregistreur en surchargeant les Logger class
niveaux Log sont des constantes de rien, mais entier définies dans logger.rb
:
# Logging severity.
module Severity
DEBUG = 0
INFO = 1
WARN = 2
ERROR = 3
FATAL = 4
UNKNOWN = 5
end
Vous pouvez connecter des messages avec tous les niveaux vous aimez utiliser Logger#add
méthode:
l.add 6, 'asd'
#=> A, [2010-02-17T16:25:47.763708 #14962] ANY -- : asd
Votre propre enregistreur suffit d'écraser le Logger#format_severity
méthode, quelque chose comme ceci:
class MyLogger < Logger
SEVS = %w(DEBUG INFO WARN ERROR FATAL VERBOSE TRAFFIC)
def format_severity(severity)
SEVS[severity] || 'ANY'
end
def verbose(progname = nil, &block)
add(5, nil, progname, &block)
end
end
IMO, c'est une meilleure réponse, car elle évite le patch de singe du noyau de Ruby. + – sethvargo
Vous pouvez simplement ajouter à la classe Logger:
require 'logger'
class Logger
def self.custom_level(tag)
SEV_LABEL << tag
idx = SEV_LABEL.size - 1
define_method(tag.downcase.gsub(/\W+/, '_').to_sym) do |progname, &block|
add(idx, nil, progname, &block)
end
end
# now add levels like this:
custom_level 'TRAFFIC'
custom_level 'ANOTHER-TAG'
end
# using it:
log = Logger.new($stdout)
log.traffic('testing')
log.another_tag('another message here.')
Si vous commencez à avoir besoin d'un tas de choses sur mesure, il peut être utile de vérifier log4r, qui est une bibliothèque de journalisation flexible qui vous permet de faire un tas de choses intéressantes/utiles facilement.
Ceci est une vieille question, mais comme il apparaît tellement haut sur google, j'ai pensé qu'il serait utile d'avoir à corriger la réponse. Vous pouvez réellement utiliser la méthode Logging.init
. Voici comment vous ajouteriez un niveau de journal trace
require 'logging'
Logging.init %w(trace debug info warn error fatal)
Logging.logger.root.level = :trace
Logging.logger.root.add_appenders Logging.appenders.stdout
Logging.logger['hello'].trace 'TEST'
Ce utilise le 2.0.0
de la gemme logging
.
- 1. Comment ajouter un niveau de log personnalisé à la fonction de journalisation de Python
- 2. java.util.logging: comment paramétrer le niveau par logger (ou préfixe)?
- 3. Niveau de journalisation ne fonctionne pas
- 4. Comment écrire un gestionnaire de journalisation python personnalisé?
- 5. Existe-t-il un système de journalisation unifié pour Ruby?
- 6. Comment obtenir le niveau de l'enregistrement de la journalisation dans un journal personnalisé.Handler en Python?
- 7. Comment contrôler le niveau de journalisation dans la bibliothèque cliente?
- 8. Comment configurer un enregistreur enfant avec un niveau de journalisation inférieur à celui de Log4net
- 9. Comment modifier le niveau de journalisation d'un package à l'aide de Log4j?
- 10. Ruby Daemons causant ActiveRecord logger IOError
- 11. Pouvez-vous filtrer au niveau Logger dans log4net
- 12. Comment désactiver la journalisation de niveau DBUG dans BayeuxServer (intégré dans Jetty)?
- 13. Définir le niveau de journalisation au niveau du gestionnaire ou de l'enregistreur?
- 14. Comment ajouter un message personnalisé
- 15. Mise à niveau de Ruby à 1,9
- 16. Configurer par programme le logger de Jetty
- 17. Puis-je désactiver l'en-tête du journal pour ruby logger?
- 18. Comment mettre à niveau un thème d'interface utilisateur jQuery personnalisé?
- 19. Définition du niveau de journalisation de l'application dans TestNG
- 20. Ajouter un paramètre personnalisé à l'URL d'odata
- 21. Dans Selenium, comment désactiver la journalisation?
- 22. Ajouter un contrôle personnalisé à ComboBox
- 23. Ajouter un contrôle personnalisé à DataGridViewCell
- 24. Ajouter un compilateur personnalisé à XCode 3.2
- 25. Ajouter un contrôle personnalisé à Subgurim Maps
- 26. Comment ajouter un type de vue personnalisé dans Drupal
- 27. serveur de journalisation de socket ruby
- 28. Comment implémenter la journalisation dans un singleton enum?
- 29. Comment puis-je ajouter un balisage personnalisé à TWiki?
- 30. Comment ajouter des commutateurs à un générateur Rails personnalisé?
Il n'y a pas un moyen facile sans écrire beaucoup de code? – turri
@turri pas que je sache. Il semble que les niveaux sont assez codés (Logger :: INFO et ainsi de suite). Peut-être qu'il y a une autre façon, mais je ne peux pas y penser maintenant – marcgg