Monkey Patching no Mecanismo de Logs do Rails  XML
Índice dos Fóruns » Ruby & Ruby on Rails
Autor Mensagem
elomarns
JavaGuru
[Avatar]

Membro desde: 21/04/2006 11:36:58
Mensagens: 241
Localização: Duque de Caxias/RJ
Offline

Alguém aqui sabe como customizar de forma ampla o comportamento de escrita de logs do Rails?

Eu quero criar uma gem que uma vez utilizada em um projeto faça com que a aplicação não mais escreva os logs em arquivos de texto como development.log ou production.log. Os logs passariam a ser inseridos em um banco de dados CounchDB através de uma chamada a uma API REST de uma aplicação cujo objetivo é centralizar o log de várias aplicações.

Eu imagino que pra fazer isso teria que fazer monkey patching no mecanismo de logs do Rails, mas não faço idéia de que parte exatamente eu deveria redefinir.

Alguém aqui sabe algo que poderia me ajudar nessa tarefa?

Elomar Nascimento dos Santos.

Não clique aqui
Nem aqui
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Bastaria vc fazer algo como

ActiveRecord::Base.logger = YouLogger.new

perguntinhas:
Se vc centralizar os seus logs em uma applicação vc não teria um ponto unico de falha?
E usar rest para logar vc esta preparado para um erro 500, bufferizar o resultado e tentar novamente?

Edit:

Vc poderia usar o Scribe, que é o que o twitter usa para fazer logging

http://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010 (slide 1

This message was edited 1 time. Last update was at 28/05/2010 12:49:16


http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
elomarns
JavaGuru
[Avatar]

Membro desde: 21/04/2006 11:36:58
Mensagens: 241
Localização: Duque de Caxias/RJ
Offline

peczenyj wrote:Bastaria vc fazer algo como

ActiveRecord::Base.logger = YouLogger.new

Pois é, acabei de descobrir que com o config.logger = MyLogger.new no environent.rb eu posso definir uma classe pra gerenciar os logs de uma aplicação Rails. Aliás, eu provavelmente já li isso em algum lugar, mas a minha memória não trabalha muito a meu favor.

peczenyj wrote:
perguntinhas:
Se vc centralizar os seus logs em uma applicação vc não teria um ponto unico de falha?

De fato. E se for me perguntar, pra fins práticos e em cenários reais, eu não acho necessário que uma empresa tenha uma aplicação responsável por administrar o log de todas as demais. E se tivesse, não sei se faria isso desta maneira. No entanto, o projeto em questão é mais uma prova de conceito, para testar, entre outras coisas, o comportamento do MongoDB em uma situação onde ele receberá uma carga razoavelmente alta.

peczenyj wrote:
E usar rest para logar vc esta preparado para um erro 500, bufferizar o resultado e tentar novamente?

Não tinha parado pra pensar nisso, mas de fato você está certo, usar uma interface REST pra isso introduz esse problema, ainda mais em um cenário onde essa interface seria usada o tempo todo. Contudo, nesse caso eu confesso não conhecer uma alternativa melhor, dado a necessidade de implementar este cenário: uma aplicação que centraliza os logs de todas as outras através de um banco de dados MongoDB.

Sempre considerei interfaces REST como uma das melhores opções para integrar sistesmas, por isso nesse caso realmente não sei que outra opção usar, já que acessar o MongoDB diretamente não me parece uma boa idéia.



peczenyj wrote:
Edit:

Vc poderia usar o Scribe, que é o que o twitter usa para fazer logging

http://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010 (slide 1

Vou dar uma olhada.

Obrigado pelas dicas e também pelas perguntas (é sempre bom se questionar se o que você está fazendo é certo).

Elomar Nascimento dos Santos.

Não clique aqui
Nem aqui
 
Índice dos Fóruns » Ruby & Ruby on Rails
Ir para:   
Powered by JForum 2.1.8 © JForum Team