29 de abr. de 2018

Como gerar log num arquivo e no console usando logging?

O jeito mais fácil de configurar a geração de log através do módulo logging (veja a documentação oficial) para diferentes destinos é usar a propriedade handlers do basicConfig:

import logging

# ...

logging.basicConfig(
  level=logging.INFO,
  format='%(asctime)s %(levelname)s - %(message)s',
  handlers=[
    logging.FileHandler(__file__.replace('.py', '.log')),
    logging.StreamHandler(sys.stdout)])

Um handler define o que será feito com a mensagem de log.

No exemplo acima, logging.FileHandler incluirá a mensagem num arquivo de log e logging.StreamHandler exibirá a mensagem no console. Neste exemplo, o arquivo gerado pelo logging.FileHandler terá o mesmo nome do arquivo Python que contem esse código.

Se precisar rotacionar o arquivo de log, experimente usar logging.RotatingFileHandler ou logging.TimedRotatingFileHandler.

2 de out. de 2015

Depois de tanto tempo...

Fazem alguns anos desde a última vez que escrevi neste blog.

Mudanças na minha vida pessoal e profissional me levaram a abandonar o blog mas, para minha surpresa, mesmo não havendo conteúdo atualizado, estas páginas recebem diariamente visitantes.

Anos atrás a maior parte do meu trabalho era focado em Delphi e um pouco de C#, participava em fóruns e tinha forte interesse nos acontecimentos da comunidade Delphi.

Por esses dias, apesar de Delphi ainda ocupar boa parte do meu tempo, o fato é que trabalho com uma versão antiga da ferramenta e não sinto mais ligação com a comunidade Delphi.

Hoje, trabalhar com Delphi é encarado como sinônimo de trabalhar com código legado. Em boa parte dos casos, isso é verdade. Muito software em uso hoje em dia foi escrito no tempo em que a aplicação desktop era a única opção. Delphi era um dos big players e o resultado é que ainda hoje muito código Delphi precisa ser mantido vivo.

No hiato de tempo que se passou, meu interesse por aplicações mobile me levaram ao Java. Minha curiosidade me levou ao Python. A necessidade me levou ao JavaScript. Aplicações web na nuvem me levaram ao Linux.

Tenho uma relação complicada com C#... é uma linguagem que evolui rápido e, paradoxalmente, é fácil você ficar desatualizado a ponto de não ter estímulo para cobrir a distância entre o que você sabe e o que precisa saber.

Cursos e eventos me mostraram que não sou tão dinossauro assim e que ainda tenho algo de valor a acrescentar nesse oceano de conhecimento que hoje está ao alcance de todos em praticamente qualquer lugar e a qualquer tempo.

Vou tentar voltar a escrever periodicamente aqui. Pelo menos esse é o desejo.

11 de jun. de 2008

Destaques do dia

Too Loosely Coupled Code

Uma discussão interessante sobre acoplamento/desacoplamento de código, com exemplos. Leia mais.

HTML Viewer Components v.9.45

Este era um pacote comercial que recentemente foi posto em domínio público pelo autor. No pacote tem 3 componente para visualizar documentos HTML escritos totalmente em Delphi. Leia mais (ou pegue o componente no torry.net).

9 de jun. de 2008

Destaques do Dia

Code is not self documenting

Jared Parsons, um membro da equipe de desenvolvimento do VB, comenta porque a recomendação de que "código deve ser auto-documentado" nem sempre pode ser seguida. Leia mais.

MSDN Magazine Junho/2008

A MSDN Magazine de Junho está disponível no site da Microsoft. Destaque para o artigo Tools and Techniques to Identify Concurrency Issues e, na nova coluna Patterns in Practice, uma discussão sobre o The Open Closed Principle.

6 de jun. de 2008

Destaques do Dia

"The Big Brother" Delphi Code Toolkit

Zarko Gajic, mantenedor do site delphi.about.com, escreveu uma série de três artigos abordando como ocultar um programa do Windows, como desabilitar recursos do Windows e como monitorar alterações no Windows (pegadinha: precisa de um componente de terceiros na segunda parte da série). Leia mais.