Qual a melhor maneira de manter um LOG de sistema: Arquivo Text ou Banco de Dados?

Gostaria da opinião da comunidade acerca de qual a melhor maneira - ou a mais aceita nos padrões atuais de arquitetura e engenharia de sistemas - de manter um log de eventos do sistema e ações de seus usuários.

Já fiz vários sistemas e às vezes opto por registrar os eventos no próprio banco de dados, e outras vezes prefiro gravar num arquivo de texto. Mas qual a maneira mais correta, tendo em base segurança, confiabilidade e performance?

Eu, assim como vc, já fiz das duas formas e acho que todas as duas são válidas em cada contexto, depende muito do que você quer visualizar no log. Se por exemplo, você quer um log pra facilitar a descoberta de erros do seu sistema, fica mais conveniente salvar em um arquivo de texto e só visualizar esse arquivo quando o cliente se queixar de um problema. No entanto, se você quer um log para visualizar quais são as inputs mais frequentes em uma determinada caixa de texto, é melhor ir para o banco pra poder unificar, consolidar, etc. Acho que todas as duas formas tem aplicabilidade, o contexto é que define qual delas é melhor. Concorda?

1 curtida

Penso que a resposta do @LeandroMartins é a mais adequada. Não acredito em “bala de prata”, ou seja, “sempre salve em arquivo físico”, “sempre salve em banco de dados”. Tudo depende do teu contexto. Sem falar, que salvar em arquivo físico pode ser de várias formas, com extensão .txt, .csv, .xml e etc, então, vai depender muito da sua necessidade, inclusive, para responder qual terá melhor performance (até porque, o banco de dados que tu vai usar pode influenciar nisso).

O único ponto que eu penso é que normalmente (não é regra), se tu quer expor os dados para um administrador, por exemplo, e separar por dados de performance, tempo de execução e etc, talvez o banco de dados seja a melhor pedida, para tu separar por “level”, por colunas por tempo e etc. Enfim, avalie seu contexto, necessidade e com esse levantamento em mãos tu vai chegar a uma resposta concreta.

Concordo com você Nel, lembrando que hoje em dia temos ótimas ferramentas para isso, uma delas é o Splunk que nos possibilita logs almost in real time.

Acho que depende de quem vai visualizar, e não o que vai ser visualizado.

Se for alguém da área de suporte vai preferir que a informação esteja em texto, mas um dev trabalhando em algum módulo da aplicação vai preferir que esteja no bando de dados.

Com certeza, @pfk66. Depende de quem vai visualizar também. O principal é verificar que todas as duas maneiras tem bom uso.