lggr

Python Logging per gli umani
Scarica ora

lggr Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • MIT/X Consortium Lic...
  • Prezzo:
  • FREE
  • Nome editore:
  • Peter Downs
  • Sito web dell'editore:
  • https://github.com/peterldowns/

lggr Tag


lggr Descrizione

Hai mai provato a fare qualsiasi cosa con il modulo di registrazione Python? Ho. Non mi piace affatto. L'API era molto confusa. Invece di affrontare tutte le sue complessità, ho deciso di rotolare il mio. Sono stato ispirato dalla presentazione di Dabeaz su Coroutines e la presentazione di Kenneth Reitz su Better Python Libraries.installPip Installa LGGRROW funziona? Creare un oggetto logger.import LGGRD = LGGR.LGGR () Aggiungi una coroutine (o qualsiasi funzione o oggetto con metodi di invio e chiusura) per consumare i messaggi di registro. LGGR include alcuni predefiniti: - LGGR.Printer () scrive a stdout- lggr.stderrprinter () scrive su stderr- lggr.printer (FilePath) apre un file su FilePath e scrive a questo.- LGGR.SocketWriter (host, porto) scrive a un socket di rete- LGGR.EMAILER (destinatari) invia e-mail-lggr.gmailer (destinatari, gmail_useername, gmail_password, oggetto = "opzionale") invia anche e-mail, ma fa da Gmail che è più sexy che farlo da solo server. Puoi scegliere di aggiungere diverse coroutine a diversi livelli di registrazione. Forse vuoi ricevere e-mail per tutti i tuoi messaggi critici, ma stampa solo su STDERR per tutto ciò che altro.D.Aggiungi (D.ALL, LGGR.Printer ()) # D.ALL è un collegamento per aggiungere una coroutine a tutti i livelli .ADD (D.CRITICO, LGGR.EMAILER ("PETERLDOWNS@GMAIL.COM")) Fai un logging.d.info ("Ciao, mondo!") D.Warning ("Qualcosa sembra essere andato {desc}", {"Desc": "Amack!"}) D.Critical ("qualcuno {} US {} The {}!", "Set", "su", "bomba") D.Close () # STOP LOGGINGGIACIARE CHE Informazioni Posso registrare? Tutto ciò che vuoi. I messaggi di registro vengono creati usando Str.Format, quindi puoi davvero creare tutto ciò che desideri. Il formato predefinito include l'accesso alle seguenti variabili: - LivelloName = Livello di registrazione come stringa ("Info") - Levelno = Livello di registrazione come numero intero (0) - PathName = percorso al file in cui è stata chiamata la funzione di registrazione (~ / Test.py) - FILENAME = Nome file La funzione di registrazione è stata chiamata da (TEST.PY) - Module = Modulo La funzione di registrazione è stata chiamata da (in questo caso, nessuno) - Exc_info = informazioni di esecuzione, passate o sys .info () - Stack_info = Stack Information, creato se l'argomento INC_STACK_INFO opzionale è TRUE (ha superato il valore predefinito per false se non esplicitamente) o la funzione di registrazione viene chiamata con funzioni di istanza critica, debug o error.- lineno = il numero di riga - FUNCNAME = il nome della funzione = il codice della funzione = il codice esatto che ha chiamato la funzione di registrazione- codeContext = circostante 10 linee che circondano il processo- Processo di codice = processo di processo corrente del processo = nome del processo corrente, se la multiprocessing è disponibile - Asctime = Time come a stringa (da tempo.assimo ()) - tempo = Tempo come secondi da Epoch (da Time.time ()) - ThreadID = L'ID filettatura, se il modulo di filettatura è disponibile- ThreadName = il nome del thread, se il modulo di filettatura è disponibile- MessageFmt = la stringa di formato per essere utilizzata Creare il messaggio di registro - LogMessage = Il messaggio formattato dell'utente- defaultfmt = il formato predefinito di un registro che si desidera utilizzare qualsiasi informazione aggiuntiva, passa semplicemente in un dett con l'argomento denominato extra: >>> d.config = '{nome} sez: {logmessage}' >>> d.info ("questo è il {}", "Messaggio", extra = {"Nome": "Peter"}) Peter Sez: Questo è il Messagea Stack_info ExampleStack_info è bello perché ti consente di fare una traceback davvero utile da dove viene chiamata esattamente la funzione di registrazione. Ad esempio, con un tagger d, potrei eseguire quanto segue: D.config = '{ASCTIME} ({LEVELLINAME}) {LOGMESSAGE} \ NIN {PathName}, riga {lineno}: \ n {codeContext } 'Def esterno (A): DEF INNERN (B): DEF FINAL (C): D.Critical ("Easy come {}, {}, {}!", A, B, c) Restituire final return Innouter (1 ) (2) (3) Uscita: lun APR 223:31:222012 (critico) Facile come A, B, C! In Test.py, linea 29: d.config = '{ASCTUME} ({LogMessage}}) {LogMessage} \ Nin {PathName}, linea {lineno}: \ n {codeContext} 'DEF EXTER (A): DEF INNER (B): DEF FINAL (C):> D.Critico ("facile come {}, {}, {}! ", a, b, c) restituire il ritorno finale Innouterouter (1) (2) (3) Homepage del prodotto


lggr Software correlato

PYCSW.

Un'attuazione del server CSW dell'oggetto OGC scritto in Python ...

98

Scarica

htables.

Una libreria di database per la memorizzazione di oggetti di mappatura in un database relazionale ...

74

Scarica