Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.

Em projetos que envolvem múltiplos módulos, a configuração de logging pode ficar repetitiva e difícil de manter. O exemplo clássico é o uso de formatos de log definidos em cada arquivo, o que acaba gerando código redundante.
Uma abordagem prática é criar uma configuração centralizada, onde o formato padrão seja definido uma única vez e herdado pelos handlers. Assim, cada módulo pode apenas obter o logger padrão e não precisar reconfigurar o formato toda hora. A decisão fica mais saudável quando o time consegue medir o impacto depois.
No Stack Overflow, alguém perguntou se dá pra racionalizar esse setup, colocando o formato na configuração raiz do logger. A resposta é que dá pra usar um logging.config.dictConfig() ou configurar o logger principal com o formato desejado e deixar os demais 'herdarem' essa configuração. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Na minha experiência, fazer isso ajuda bastante na hora da manutenção, além de evitar erros de inconsistência nos logs. Para quem trabalha com várias bibliotecas ou módulos, o ganho de visibilidade e facilidade de ajuste é enorme. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Se você estiver pensando em implementar, tente criar um arquivo de configuração central, onde o formato e os handlers estejam definidos. Depois, é só importar e usar os loggers normalmente. Assim, o código fica limpo e o controle dos logs fica mais fácil. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Como vocês costumam lidar com isso na prática? Já tiveram que refatorar uma configuração de logs grande assim?
manda um ae no meu time, a gente criou um módulo só pra configuração de logs, assim evita de ficar repetindo setup em vários pontos. Funciona bem pra manter tudo padrão e ainda dá pra trocar o formato rápido.
Concordo, esse tipo de centralização ajuda muito na hora de fazer ajustes rápidos. Já passei por isso na minha equipe, e configurar o logger principal com um formato padrão evitou várias dores depois.
Exato, e além do mais, usando
dictConfig()fica fácil de manter tudo separado do código, quase como um arquivo de configuração mesmo.Acho que o ponto mais dificil e cuidar para que os logs herdados nao fiquem com formatos diferentes ao longo do projeto. Mas se fizer uma configuracao inicial bem definida ajuda a manter a consistencia.