lggr.

log de python para humanos
Baixe Agora

lggr. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • MIT/X Consortium Lic...
  • Preço:
  • FREE
  • Nome do editor:
  • Peter Downs
  • Site do editor:
  • https://github.com/peterldowns/

lggr. Tag


lggr. Descrição

Você já tentou fazer qualquer coisa com o módulo de log de python? Eu tenho. Eu não gostava de nada. A API foi muito confusa. Em vez de lidar com todas as suas complexidades, decidi rolar a minha própria. Eu fui inspirado pela apresentação de Dabeaz sobre Coroutines e a apresentação de Kenneth Reitz em melhores bibliotecas Python.Installpip Install LGGRCHOW O que funciona? Criar um logger object.import lggrd = lggr.lggr () Adicione uma coroutine (ou qualquer função ou objeto com métodos de envio e fechamento) para consumir mensagens de log. LGGR inclui alguns itens padrão: - LGGR.Printer () grava para STDOUT-LGGR.SterRPrinter () Grave para StderR-LGGR.Printer (FilePath) abre um arquivo no FilePath e escreve para isso.- LGGR.SocketWriter (host, porta) Escreve para uma rede Socket-LGGR.Emailer (destinatários) envia e-mails-lggr.gmailer (destinatários, gmail_username, gmail_password, sujeito = "opcional") também envia e-mails, mas faz do Gmail que é tão próprio do seu próprio O servidor.Você pode optar por adicionar coroutines diferentes a diferentes níveis de registro. Talvez você queira receber e-mails para todas as suas mensagens críticas, mas apenas imprima para stderr para tudo o resto.d.add (d.all, lggr.printer ()) # d.all é um atalho para adicionar uma coroutine a todos os níveis .add (d.crítico, lggr.emailer ("peterdowns@gmail.com")) fazer algum logging.d.info ("Olá, mundo!") D.Warning ("algo parece ter ido {desc}", {"Desc": "Amuck!"}) D.Crítico ("Alguém {} US {} O {}!", "set", "up", "up", "bombardeiro") d.close () # pare de fazer loggingwhat Informações posso registrar? Qualquer coisa que você quiser. As mensagens de log são criadas usando str.format, para que você possa realmente criar qualquer coisa que quiser. O formato padrão inclui o acesso às seguintes variáveis: - LevelName = Nível de log como uma string ("INFO") - LevelNO = nível de log como um inteiro (0) - pathname = caminho para o arquivo que a função de log foi chamada de (~ / Test.py) - Nome do arquivo = nome do arquivo A função de registro foi chamada de (Test.py) - Módulo = Módulo A função de registro foi chamada de (neste caso, nenhum) - Exc_info = informações de execução, passadas ou sys .info () - stack_info = informações de pilha, criada se o argumento Inc_Stack_info opcional for verdadeiro (ele é padronizado se não ser explicitamente passado) ou a função de log for chamada com funções de instância crítica, depuração ou erro .- LineNo - Funcname = O nome do nome da função = O código exato que ligou para a função de registro - CODECTEXT = em torno de 10 linhas em torno de código- processo = processo de processo atual- processadame = nome do processo atual, se o multiprocessamento estiver disponível - ascensão string (do tempo.asctime ()) - tempo = Tempo como segundos da época (a partir do tempo.time.time ()) - ThreadID = O ID do encadeamento, se o módulo de encadeamento estiver disponível - threadname = o nome do thread, se o módulo de encadeamento estiver disponível - MessageFMT = a string de formato a ser usada para Criar a mensagem de log- LogMessage = a mensagem formatada do usuário - DefaultFMT = o formato padrão de um MessageSiF de Log que você deseja usar qualquer informação extra, simplesmente passar em um ditado com o argumento nomeado Extra: >>> d.config = '{name} sez: {logMessage}' >>> d.info ("Esta é a {}", "mensagem", extra = {"nome": "Peter"}) Peter Sez: Este é o messagea Stack_info Examplestack_Info é legal porque permite que você faça rastreamentos realmente úteis para onde exatamente sua função de registro está sendo chamada. Por exemplo, com algum logg, eu poderia executar o seguinte: D.Config = '{asctime} ({nincadame}) {logMessage} \ n nin {pathname}, linha {lineNo}: \ n {codeContext } 'DEF Outer (A): Def Interior (B): Def Final (c): D.Crítico ("fácil como {}, {}, {}!", A, B, C) Retorno final de retorno (1 ) (2) (3) Saída: Seg 223:31:222012 (crítico) fácil como A, B, c! Em test.py, linha 29: d.config = '{asctime} ({LevelName}) {LogMessage} \ Nin {Pathname}, linha {lineNo}: \ n {codecontext} 'def externa (A): DEF Interior (B): Def Final (c):> D.Crítico ("fácil como {}, {}, {}! ", A, B, C) Retorno final de retorno Innerouter (1) (2) (3) (3) Homepage do produto


lggr. Software Relacionado

Horizes.

Uma biblioteca de banco de dados para armazenar objetos de mapeamento em um banco de dados relacional ...

74

Download