lggr

Python Logging para humanos
Descargar ahora

lggr Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • MIT/X Consortium Lic...
  • Precio:
  • FREE
  • Nombre del editor:
  • Peter Downs
  • Sitio web del editor:
  • https://github.com/peterldowns/

lggr Etiquetas


lggr Descripción

¿Alguna vez has tratado de hacer algo con el módulo de registro de Python? Tengo. No me gustó en absoluto. La API era muy confusa. En lugar de tratar con todas sus complejidades, decidí rodar la mía. "Me he inspirado en la presentación de Dabeaz en Coroutines y la presentación de Kenneth Reitz en mejores bibliotecas de Python.IntallPip Install LGGRHOW ¿Funciona? Crear un registrador de objetos.import lggrd = lggr.lggr () Agregue una coroutina (o cualquier función u objeto con métodos de envío y cierre) para consumir mensajes de registro. LGGR incluye algunos predeterminados: - lggr.printer () escribe a stdout- lggr.stderrpinter () escribe a stderr- lggr.printer (FilePath) abre un archivo en Filepath y escribe a ese.- lggr.sockterwriter (host, puerto) Escribe a una red Socket- Lggr.Emailer (destinatarios) envía correos electrónicos- lggr.gmailer (destinatarios, gmail_username, gmail_password, sujeto = "opcional") también envía correos electrónicos, pero lo hace de Gmail, que es un lugar más sexy que hacerlo desde su propio Servidor. Puede elegir agregar diferentes corovas a diferentes niveles de registro. Tal vez quiera recibir correos electrónicos para todos sus mensajes críticos, pero solo imprimir en STDERR para todo lo demás.D.ADD (D.ALL, LGGR.PRINTRINT ()) # D.ALL es un acceso directo para agregar una coroutina a todos los niveles .ADD (D.Crítico, LGGR.Emailer ("PeterlDowns@gmail.com")) Haz algunos logging.d.info ("Hello, World!") D.Warning ("Algo parece haber ido {DESC}", {"Desc": "Amuck!"}) D. Crítico ("Alguien {} US {} ¿El {}!", "Conjunto", "Arriba", "bomba") D.Cerrar () # deja de registrarlo que tipo de Información ¿Puedo registrar? Cualquier cosa que quieras. Los mensajes de registro se crean usando STR.Format, para que realmente pueda crear cualquier cosa que desee. El formato predeterminado incluye el acceso a las siguientes variables: - Nombre Nombre = Nivel de registro como una cadena ("Información") - LevelNo = Nivel de registro como un entero (0) - PATHNAME = Ruta al archivo de la que se llamó la función de registro (~ / test.py) - nombre de archivo = nombre de archivo se llamó de la función de registro (test.py) - módulo = módulo se llamó la función de registro de (en este caso, ninguno) - exc_info = información de ejecución, ya sea pasada o sys .info () - stack_info = información de pila, creada si el argumento opcional inc_stack_info es verdadero (los incumplimientos de imposión predeterminados sean falsos si no se pasan explícitamente) o la función de registro se llama con las funciones de instancia críticas, depuración o error.- Lino = el número de línea - FUNCNAME = EL CÓDIGO DE FUNCIONES = El código exacto que llamó la función de registro: CODECONTXT = Líneas alrededor del Código de los alrededores: Proceso Cadena (de Time.Sctime ()) - Tiempo = Tiempo como segundos desde la Epoch (de Time.Time ()) - ThreadID = la ID de rosca, si el módulo de roscado está disponible, el nombre de rosca = el nombre de la rosca, si el módulo de roscado está disponible, MensajeFMT = la cadena de formato a utilizar para Crea el mensaje de registro- LOGMESSAY = EL MENSAJE FORMITADO DEL USUARIO: DEFAULTFMT = El formato predeterminado de un mensaje de registro Si desea usar cualquier información adicional, simplemente pasar en un dict con el argumento llamado Extra: >>> D.config = '{nombre} sez: {logarmessage}' >>> d.info ("Este es el {}", "Mensaje", Extra = {"Nombre": "Peter"}) Peter Sez: Este es el Messagea Stack_info EXAMPLESTACK_INFO es genial porque le permite realizar tiempos de recuperación realmente útiles a donde se llama exactamente su función de registro. Por ejemplo, con un poco de registrador D, podría ejecutar lo siguiente: D.config = '{asctime} ({nivelName}) {logarmessage} \ nin {rathname}, line {lineno}: \ n {codecontext } 'DEF EXTERIOR (A): DEF INTERNER (B): DEF FINAL (C): D. Crítico ("Fácil como {}, {}, {}!", A, B, C) Devuelve la devolución de la última vuelta (1 ) (2) (2) Salida: Lunes 23:31:222012 (crítico) ¡Fácil como A, B, C! En test.py, línea 29: d.config = '{asctime} ({NivelName}) {LogMessage} \ Nin {PathName}, Line {Lineno}: \ n {CODECONTEXT} 'DEF EXTERIOR (A): DEF INTERNER (B): DEF FINAL (C):> D.crítico ("fácil como {}, {}, {}! ", a, b, c) devuelve el retorno final innouter (1) (2) (3) Página de inicio del producto


lggr Software relacionado

htables

Una biblioteca de bases de datos para almacenar objetos de asignación en una base de datos relacional ...

74

Descargar