Ho bisogno di aggiungere un livello di log personalizzato come "verbose" o "traffic" a ruby logger, come fare?Come aggiungere un livello di registro personalizzato per logger in ruby?
risposta
È possibile creare il proprio logger sovraccaricando i Logger class
livelli di log non sono altro che interi costanti definite in logger.rb
:
# Logging severity.
module Severity
DEBUG = 0
INFO = 1
WARN = 2
ERROR = 3
FATAL = 4
UNKNOWN = 5
end
È possibile registrare i messaggi con qualsiasi livello ti piace usare Logger#add
metodo:
l.add 6, 'asd'
#=> A, [2010-02-17T16:25:47.763708 #14962] ANY -- : asd
Il proprio data logger deve solo sovrascrivere lo Logger#format_severity
metodo, qualcosa di simile:
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, questa è una risposta migliore perché evita la patch della scimmia del nucleo di Ruby. + – sethvargo
Si può semplicemente aggiungere alla 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.')
Se si avvia bisogno di un sacco di roba su misura, può essere la pena di verificare log4r, che è una libreria di registrazione flessibile che ti permette di fare un sacco di cose interessanti/utili facilmente.
Questa è una vecchia domanda, ma dato che è così in alto su google, ho pensato che sarebbe stato utile dover correggere la risposta. È possibile utilizzare effettivamente il metodo Logging.init
. Ecco come si dovrebbe aggiungere un livello di log 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'
Questo sta usando il 2.0.0
del logging
gemma.
- 1. Registrazione Java: come reindirizzare l'output in un file di registro personalizzato per un logger?
- 2. Come utilizzare il logger personalizzato per registrare il registro di accesso in avvio di primavera
- 3. logback - la riassegnazione di un livello di registro per un logger specifici
- 4. logger jPOS: per aggiungere logger nel packager
- 5. Cambia livello registro in unittest
- 6. Come posso impostare un livello di registro diverso per un plugin Gradle personalizzato
- 7. Livello log per appender per un singolo Logger
- 8. Posso disabilitare l'intestazione del registro per il logger rubino?
- 9. Come formattare il ruby logger?
- 10. Configurazione di un registro eventi personalizzato per log4net
- 11. Come faccio a filtrare su un livello personalizzato in log4net?
- 12. Come si modifica il formato di un messaggio di registro Python su base per-logger?
- 13. Come aggiungere il timestamp al file di registro
- 14. Come formattare il ruby logger su questo?
- 15. Configurazione logger ruby configurabile: Logger.new(). Level = variable
- 16. Livello registro applicazione di avvio a molla
- 17. aggiungere registro eventi per Registry
- 18. Log4j impostazione del livello di registro per classe individuale
- 19. Come stampare solo i messaggi di registro per un dato logger?
- 20. Logger per libreria Java
- 21. come aggiungere un registro al mio vbscript
- 22. Modifica del livello di registro a livello logico in log4net?
- 23. Dove definire un logger statico a livello di applicazione?
- 24. Come aggiungere un suggerimento personalizzato per l'indicatore di Google Maps?
- 25. Logback - come ottenere che ogni logger effettui il log in un file di registro separato?
- 26. Come configurare log4j per registrare diversi livelli di registro in file diversi per lo stesso registratore
- 27. Nome file personalizzato in un file di registro Log4Net progressivo?
- 28. Come si aggiunge un campo personalizzato alla stringa del formato di registro Python?
- 29. Rails: come scrivere in un file di registro personalizzato da un'attività rake in modalità produzione?
- 30. Come aggiungere Python al registro di Windows
Non c'è un modo semplice senza scrivere molto codice? – turri
@turri non che io sappia. Sembra che i livelli siano praticamente codificati in (Logger :: INFO e così via). Forse c'è un altro modo, ma non riesco a pensarci adesso – marcgg