Fork me on GitHub

Keep Learning Conhecimento nunca é o bastante

Postado em
18 September 2009 @ 15:11

Tag(s)
Dicas, Ruby

O ActiveSupport mexeu no seu logger? Recupere a formatação original!

Recentemente estava escrevendo um script de manutenção utilizando o logger padrão do Ruby e tudo estava indo muito bem. A formatação padrão do logger oferece uma boa quantidade de informação, com timestamp, id do processo, nível da mensagem (erro, informação etc), como na imagem abaixo:

Formatação padrão do logger

Formatação padrão do logger

Pouco depois, resolvi utilizar o ActiveRecord (que carrega junto o ActiveSupport) no script. Feito isso, o output do logger mudou para:

Formatação com ActiveSupport

Formatação com ActiveSupport

Isso não é bom. Pesquisei um pouco e descobri que o ActiveSupport modifica a formatação padrão utilizando uma classe chamada SimpleFormatter ao invés da classe Formatter padrão do logger.

Desta forma, recuperar a formatação original é simples, basta modificar o formater utilizado pela sua instância do logger:

log = Logger.new(STDOUT)
log.datetime_format = "%d-%m-%Y %H:%M:%S"
 
# Recuperando a formatação original
log.formatter = Logger::Formatter.new

Também é possível alterar o formatter padrão na classe Logger. Dessa forma todas as instâncias utilizarão o formato padrão:

# Fazer isso após carregar o ActiveSupport para reverter a alteração do formatter
class Logger
  def formatter
    @formatter = Formatter.new
  end
end

Nenhum comentário até agora


Nenhum comentário ainda. Você pode ser o primeiro!

Deixe um comentário