Twiggy yra ankstyvojo etapo projektas statyti daugiau Pythonic žurnalo paketą.
Naudojimas:
Padaryti rodymo darbą:
>>> import sys; sys.stderr = sys.stdout
Sąranka yra paprasta
Savo main.py:
>>> Importo Twiggy
>>> Twiggy.quick_setup ()
Medienos ruošos Žinutės
>>> Iš Twiggy import *
Pagrindinė sąsaja yra magija Prisijungti:
>>> Prisijunkite #doctest + daugtaškis
Jis veikia out of the box, naudojant standartinius lygius:
>>> Log.debug ("Tu negali rūpintis)
SUDERINTI: Jūs galite nerūpi
>>> Log.error ("OMFG! Kelnės ant ugnies!")
KLAIDA: OMFG! Kelnės ant ugnies!
Jis palaiko daug formatų stygos įvairovė, nevykdančiam nauja stiliaus:
>>> Log.info ("aš dėvėti {0} ant mano {kur} ',' kelnės ', kur = kojelės")
INFORMACIJA: aš dėvėti kelnes ant mano kojų
Old Style veikia puikiai, nors:
>>> Log.options (style = "procentų). Informacija (" Man patinka% s "," dviračiai ")
INFORMACIJA: Man patinka dviračiai
Kaip padaryti šablonai:
>>> Log.options (style = "doleris"). Informacija ('$, ką žudyti ", kas =' Automobiliai ')
INFORMACIJA: Automobiliai nužudyti
Jūs galite pavadinti savo kaupikliai:
>>> Mylog = log.name (Alfredo)
>>> Mylog.debug ("Hello")
SUDERINTI: Alfredo: Sveiki
Bet vardas neturi ryšio su objektu; tai tik žmonių naudoti:
>>> Mylog yra log.name (Alfredo)
Netikras
spinduliuojantis Žinutės
Teršėjai yra silpnai:
>>> Twiggy.emitters #doctest + daugtaškis
{'*':
Galite nustatyti, dėl Emitters min_level:
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.INFO
>>> Log.debug ("Pagalba, pagalba aš vis slopino")
>>> Log.info ("Aš ne visai miręs dar")
INFORMACIJA: Aš ne visai miręs dar
Galite filtruoti įpraiškas, arba savavališkai funkcijų:
>>> twiggy.emitters ['*']. filter = ". * kelnes. *"
>>> Log.info ("Got My {0} ant", "kelnės")
INFORMACIJA: Turite kelnes nuo
>>> Log.info ("gavau mano {0} tema", "marškinius")
Leiskite naujo viską, kad:
>>> twiggy.emitters ['*']. filtras = True
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.DEBUG
"Geriau produkcija
Naujas eilutes malšinantis pagal nutylėjimą; kurios gali būti išjungtas per-pranešimą:
>>> Log.info ("naudotojas ninput nannoys NUS)
INFORMACIJA: vartotojo ninput nannoys NUS
>>> log.options (suppress_newlines = false) .info ("mes ndeal)
INFORMACIJA: mes
sandoris
Išimtys priešdėliu. Taip pat gali perduoti exc_info. Naudokite ' n' kaip priešdėlis sulankstyti į vieną eilutę:
>>> Bandymas atnaujinti:
... 1/0
... Išskyrus:
... Log.trace ("klaidos") Įspėjimas ("O KT") #doctest:. + Daugtaškis
Įspėjimas: oh KT
TRACE Traceback (naujausia skambutis paskutinis):
TRACE Failo "
TRACE 1/0
TRACE ZeroDivisionError: sveikas kvadratas arba modulį iš nulio
, jungimo būdas "
Man patinka šis grandinines stilių aikštelė.
>>> Log.name (Benito). Informacija ("Hi there")
INFORMACIJA: Benito: Sveiki
Tai daro struktūrizuotą medienos ruoša paprasta:
>>> log.fields (keliai = 42) .info ("Going pasivaikščioti)
Info: keliai = 42: Ėjimas pasivaikščioti
Trumpiniai. Puikus runtime statistikos rinkimas.
>>> Log.struct (keliai = 42, delfinai = 'dėkinga)
Info: delfinai = dėkinga: keliai = 42:
Dalinis privalomas gali būti naudinga webapps:
>>> Per_request_log = log.fields (REQUEST_ID = '12345')
>>> Per_request_log.fields (eilučių = 100, vartotojo = 'Frank "). Informacija (" frobnicating duomenų bazė)
INFORMACIJA: REQUEST_ID = 12345: eilutės = 100: vartotojo = Frank: frobnicating duomenų
>>> per_request_log.fields (baitų = 5678) .info (siunčiant puslapį per vamzdelius)
Info: baitai = 5678: REQUEST_ID = 12345: siunčiant puslapį per vamzdžių
Chained stilius yra nuostabus:
>>> Log.name (donjuan). Laukai (kelnes = 'seksualus'). Informacija ("Sveiki, {kas} {norite ką}?", Kuri = 'ponios', kas = 'šokių')
INFORMACIJA: donjuan: kelnės = seksualus: Sveiki, ponios nori šokti?
Dinaminis!
Bet kokie ARGS / laukų funkcijos vadinamas ir vertė, pakeisto:
>>> import os
>>> Iš twiggy.lib importo thread_name
>>> Thread_name ()
"MainThread"
>>> log.fields (PID = os.getpid) .info ("Aš siūlų {0}", thread_name) #doctest: + daugtaškis
INFORMACIJA: PID = 1076: aš siūlų MainThread
Tai gali būti naudinga su dalinai-surištų kaupikliai, kurie Leiskite mums padaryti kai cool stuff:
>>> Klasė ThreadTracker (objektas):
... Def __init __ (savarankiškai, objektas):
... Savęs .__ Obj = Obj
... # Dalinai jungiasi kaupiklis
... Savęs .__ prisijunkite = log.name ("tracker"). Laukeliai (obj_id = tapatybės (objektas), siūlai = thread_name)
... Savęs .__ log.debug ("pradėjo sekti")
... Def __getattr __ (self, attr):
... Savęs .__ log.debug ("atvertas {0}", attr)
... Puses getAttr (savarankiškai .__ objektas, attr)
...
>>> Klasės puokštė (objektas):
... Pass
...
>>> Rūšys = Bunch ()
>>> Foo.bar = 42
>>> Stebimi = ThreadTracker (rūšys)
SUDERINTI: trackeris: obj_id = 14063980: sriegis = MainThread: pradėjo stebėti
>>> Tracked.bar
SUDERINTI: trackeris: obj_id = 14063980: sriegis = MainThread: atvertas baras
42
>>> Importo sriegimo
>>> T = threading.Thread (target = "Lambda": tracked.bar * 2, vardas = "TheDoubler)
>>> T.start ()
SUDERINTI: trackeris: obj_id = 14063980: sriegis = TheDoubler: atvertas baras
Jei tikrai norite prisijungti į pirmalaikio išpirkimo, Repr (), tai ar apvyniokite jį lambda.
optimizavimas
Kaip optimizavimas, min_level galima nustatyti kaupikliai:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("matote šį")
INFORMACIJA: Alfredo: matote šį
>>> Mylog.debug ("Tai yra paslėptas")
Jie taip pat filtrą, kuris veikia format_spec. Naudojimo atveju būtų veiksmingai išjungtų konkrečius pranešimus bibliotekoje, kuri daro kažką kvailo:
>>> Mylog.filter = liambda S: "Shenanigans" ne s
>>> Mylog.info ("Nuo Bezmyślność)
INFORMACIJA: Alfredo: Nuo Bezmyślność
>>> Už I xrange (3): # didelių vertybių 3
... Mylog.info ("Serverio klaida!")
>>> Mylog.info ("End Bezmyślność)
INFORMACIJA: Alfredo: galinė Bezmyślność
Reikalavimai
- Python,
Komentarai nerastas