Como posso usar o módulo de log no Python para gravar em um arquivo? Toda vez que tento usá-lo, apenas imprime a mensagem.
128
Um exemplo de uso em logging.basicConfig
vez delogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
Em ordem, as cinco partes fazem o seguinte:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
se em execução no apacheif __name__ == '__main__':
não é executada.Retirado do " livro de receitas de registro ":
E você está pronto para ir.
PS Leia também o HOWTO de registro em log .
fonte
logger.warning("message")
, não posso usarlogger.info("message")
nemlogger.debug("message")
. Isso é um pouco chato.logger.setLevel(logging.DEBUG)
. Os registradores podem ser configurados com vários manipuladores; o nível configurado no criador de logs determina quais mensagens de log de nível de gravidade devem ser enviadas para cada um de seus manipuladores, e os níveis definidos nos manipuladores determinam quais níveis o manipulador processará. Observe que aqueles que desejam imprimir mensagens informativas precisam apenas configurá-loINFO
no registrador e no manipulador.logger.setLevel(logging.DEBUG)
- obrigado pelos comentáriosEu prefiro usar um arquivo de configuração. Ele permite que eu mude os níveis de log, locais, etc., sem alterar o código quando passar do desenvolvimento para o lançamento. Simplesmente empacotei um arquivo de configuração diferente com o mesmo nome e com os mesmos registradores definidos.
Aqui está o meu código para o arquivo de configuração de log
fonte
%%
em Python 3. exemplotime.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
fonte
logging
documentação oficial do módulo permite isso. Você pode até escolher quais logs entram no terminal e quais entram em um arquivo, e muitos outros aplicativos interessantes. docs.python.org/3/howto/…aqui está uma maneira mais simples de fazer isso. esta solução não usa um dicionário de configuração e usa um manipulador de arquivos de rotação, da seguinte maneira:
ou assim:
a variável manipuladora precisa ser iterável. logpath + filename e debug_level são apenas variáveis contendo as informações respectivas. é claro, os valores para os parâmetros de função são com você.
a primeira vez que eu estava usando o módulo de log, cometi o erro de escrever o seguinte, o que gera um erro de bloqueio de arquivo do sistema operacional (a solução acima é a solução):
e Bob é seu tio!
fonte
http://docs.python.org/library/logging.handlers.html#filehandler
fonte
FileHandler
s para várias situações. (WatchedFileHandler
,RotatingFileHandler
, Etc.)fonte
fonte
Formato Descrição
Maneira normal de ligar
Resultado
Usando Dict, valores de chamada
otherMod2.py
Resultado
fonte