Git e Liberações

Volta e meia precisamos separar os arquivos que foram alterados em uma lista de commits…

Para isto eu criei um pequeno script que faz isto, lista os arquivos de N commits do git, copia-os para uma pasta separada e gera um arquivo com a lista dos commits atingidos.

É um script muito simples, mas que vai me ajudar muito.

Link: http://bit.ly/Uiyj3d

Anúncios

Log Rotativo

Como podemos fazer um log para a nossa aplicação, se que seja rotativo por tamanho de arquivo ?

Simples…

import logging
from logging.handlers import RotatingFileHandler

LOG_FILENAME = "nome_do_meu_.log"
LOGNIVEL = logging.INFO

log = logging.getLogger("Notifier")
log.setLevel(LOGNIVEL)

# Add the log message handler to the logger
formatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s",'%a, %d %b %Y %H:%M:%S')
handler = RotatingFileHandler(LOG_FILENAME, maxBytes=2300, backupCount=5)
handler.setFormatter(formatter)
handler.setLevel(LOGNIVEL)
log.addHandler(handler)

#Teste
try:
    log.debug("Este é um log de debug...")
    log.info("este é um log de informação")
    log.error("Este é um log de erro")
    teste = 1/0 # isto é para gerar o erro de teste... 
except Exception as e:
    log.exception(e)

Logs no python…

Fazia já algum tempo que eu procurava uma boa biblioteca de logs, para o python, mais versátil que o tradicional modulo logging.

E ontem achei : é a LogBook!

Bom, primeiramente esta biblioteca está ainda em estado de alpha, servindo somente para testes de desenvolvimento, e não indicada para produção. Mas, lendo a documentação dela já dá para perceber que temos um ótimo produto vendo por ai.

Com ele temos vários handlers de logs: stream, email, arquivos rotacionados por tempo ou tamanho, arquivos monitorados, saídas padrão de erro e print,  sys, e até abertura de tickets no trac e redmine. Pelo que lí também ele se preocupa bastante com a performance dos logs, uma vez que logs podem se tornar um gargalo de performance quando necessitamos dele.

Ele traz também compatibilidade com sistemas distribuídos e filas (ZeroMQ) e sistemas multiprocessados. E isto é um grande ganho para todos, pois geralmente temos alguns problemas para fazer nossos logs funcionar corretamente nestes ambiente…

Bom, fica aí a dica ! Agora é baixá-lo e testá-lo em sua aplicação !

Boa Sorte!

>>>> from logbook import Logger
>>>> log = Logger('Logbook')
>>>> log.info('Hello, World!')
[2010-07-23 16:34] INFO: Logbook: Hello, World!