=====log4r=====
[[http://log4r.sourceforge.net/|log4r]] est une bibliothèque de gestion de logs pour ruby (à la log4j, etc). Son utilisation
est beaucoup plus souple que celle de logger qui ne permet pas, par exemple, de (re)définir simplement le format
des logs, seul le format de date étant paramétrable. La configuration de log4r, à l'instar de celle de log4j, peut être
effectuée via un fichier XML. Ce qui a l'avantage considérable d'externaliser la configuration des logs par rapport
au code ruby proprement dis.
Voyons un petit exemple :
#!/usr/bin/ruby
require 'log4r'
require 'log4r/configurator'
include Log4r
class MyFormatter < BasicFormatter
@@basicformat = "%s:%s %*s %s"
def format(event)
if (ENV.has_key?('REMOTE_USER'))
user = ENV['REMOTE_USER']
else
user = "anonymous"
end
if (ENV.has_key?('REMOTE_ADDR'))
address = ENV['REMOTE_ADDR']
else
address = 'unknow'
end
buff = sprintf(@@basicformat, user, address, MaxLevelLength, LNAMES[event.level],
event.name)
buff += (event.tracer.nil? ? "" : "(#{event.tracer[0]})") + ": "
buff += format_object(event.data) + "\n"
buff
end
end
Configurator.load_xml_file('./log4r.xml')
logger = Logger['logger']
logger.level = Logger::WARN
logger.debug { "debug message" }
logger.info { "info message" }
logger.warn { "warn message" }
logger.error { "error message" }
logger.fatal { "fatal error" }
La classe MyFormatter (qui hérite de BasicFormatter) permet de définir mon propre format de logs. Dans cet exemple,
le script étant voué à une utilisation en CGI authentifié, cela me permet de rajouter le nom d'utilisateur ainsi
que son IP à chaque fichier de log.
#{webservices_log}
false
~~DISCUSSION~~