Logpy.

registro não ortodoxo para python
Baixe Agora

Logpy. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • BSD License
  • Preço:
  • FREE
  • Nome do editor:
  • Michal Hordecki
  • Site do editor:
  • http://github.com/MHordecki

Logpy. Tag


Logpy. Descrição

Registro não ortodoxo para python A Logpy é uma alternativa para instalações padrão de registro de python, frouxamente baseadas no log5 do Lisp. É baseado em princípios de beijo - portanto eu queria que fosse o mais transparente possível. A principal diferença quando comparada ao registro do Stdlib é a arquitetura baseada na tag. No log, cada log atribuiu um determinado nível (seja depurado, erro, etc.). Isso é tudo. Logpy, por outro lado, tags esportivos - você pode anexar cordas curtas a cada mensagem. A tag pode representar variedade de coisas: nível de gravidade, nome do módulo ou alguma categorização de log personalizado.Logpy requer Python 2.6 ou superior. Ele funciona perfeitamente no Python 3 também (na verdade, é desenvolvido com PY3K em mente e, em seguida, revertido para python 2.6) .getting IniciandoUsing Logpy está morto simples: de logpy Import LogpyImport Syslog = logpy () log.add_Output (sys.storeR.write Log ('debug') ('Hello World!') Voila! Instâncias de logpy são caláveis. Para produzir um log, chamar log "duas vezes" - na primeira chamada, passe todas as tags do log, e tudo passou para o segundo será considerado uma parte da mensagem. O exemplo irá produzir logs para a saída de erro padrão. Fácil, não é? Sob o Hoodlogpy tem algumas camadas de abstração: 1. Logpy - aceita dados do usuário, combina-os em uma instância de mensagem e passa a todas as saídas. 2. Saída - filtra as mensagens com base em algumas condições predefinidas, e se a mensagem passa a todos, ele é formatado pelo formatador e, em seguida, passou para a saída real. 3. Formatatário - leva mensagem e formata;) (na implementação padrão, ele usa string.format para o trabalho). 4. Saída real - um chamado que, por exemplo, produza a saída do formatador para a tela. Todas as camadas / objetos são CallIns.common TasksOutput FilteringWith várias saídas, você provavelmente deseja filtrar alguns logs em cada um deles. Há suporte para isso: log = logpy () log.add_output (my_Output, filter = lambda m: 'erro' em m.tags) # equivalente a: log.add_output (my_Output, filter = ) Como você pode ver, os filtros são callables, levando o objeto de mensagem como um argumento e retornar bool. Vários filtros podem ser fornecidos por uma lista.Custom FormattingYou Você pode personalizar a formatação, substituindo a string de formato ou substituindo o objeto de formatação completamente. Sua escolha.Custom Format StringThis One atenderá 90% de suas necessidades. Você pode alterar sua string de formato com argumento de palavras-chave para o método add_Output de logpy (também possível quando instanciar diretamente objetos de saída): log.add_Output (..., Formatter = 'Minha string de formato personalizado!') Ao processar uma mensagem, formato de método da string será chamada de seguimento, argumentos predefinidos: * Data - Datetime Object * Tags - Lista delimitada por espaço de tags (string) * Args - Lista de argumentos na mensagem * Kwargs - Dict of Keyword Arguments na mensagem * Mensagem - O objeto de mensagem real. Todos os argumentos acima são, na verdade, apenas um açúcar sintático, como são todos atributos desse objeto.Default Format String Parece a seguinte: {date}: {tags}: {args} {kwargs} \ ndon't que se esqueça de colocar uma nova linha em O final, ou seus logs ficarão aleijados. O trabalho com vários módulos pode se ajudar ao usar logpy com vários módulos predefinindo algumas das tags: # Modulelog = Logpy () # Criança Moduleimport MainModulelog = MainModule.log ('Módulo: Childmodule. ', curry = true) # agora: log (' debug ') (' hello world! ') # é equivalente Tolog (' módulo: childmodule ',' debug ') (' Hello World ') Formato personalizado Objectindo caso você quer o Poder total - você pode se livrar do formatador padrão: log.add_output (..., Formatter = My_Formatter_Object) Objetos de formatação devem estar em conformidade com o protocolo simples: Classe de classe: def __call __ (mensagem: Mensagem) -> Quase razoável: Mensagem de PassClass : tags = set (str) args = [] # passado pelo usuário kwargs = {} # passado pela data do usuário = datetime.datetime (eu não tenho idéia wh Por favor, se houver notação formal padrão para descrever protocolos em Python além de coisas como Zope.Interface. Espero que minhas divagações sejam claras.) Onde algo razoável significa: tudo o que será aceito pela saída da saída (sons meio bobo) - geralmente significa str, mas nem sempre.Custom saída objeto você está disposto a raspar 50% do LOC de Logpy, sinta-se à vontade para fazê-lo: log.add_raw_output (my_customized_output_object) que vale a pena mencionar é o fato de que logpy.add_Output é apenas um wrapper para: log.add_output (...) # equivalente tog.add_raw_output (saída (. ..)) Protocolo de saída Precisa da seguinte forma: saída de classe: def __call __ (mensagem: mensagem): passin Outras palavras: você será chamado com cada log emitido pelo usuário.Note: por favor, trate as mensagens como objetos imutáveis - eles estão sendo reutilizado para todas as saídas.Thread Safetylogpy emprega alguma segurança básica de rosca; Um threading.lock é usado no método __call__ de logpy. Pode ser facilmente substituído: de threading import rlocklog = logpy () log.lock = rlock () Requisitos: · Pitão


Logpy. Software Relacionado