Twiggy

Sagteware kiekie:
Twiggy
Sagteware besonderhede:
Weergawe: 0.4.4
Upload datum: 11 May 15
Ontwikkelaar: Peter Fein
Lisensie: Gratis
Populariteit: 6

Rating: nan/5 (Total Votes: 0)

Twiggy is 'n vroeë stadium projek om 'n meer Pythonic meld pakket te bou.
Gebruik:
Maak vertoning werk:
>>> Invoer sys; sys.stderr = sys.stdout
Setup is eenvoudig
In jou main.py:
>>> Invoer takkies
>>> Twiggy.quick_setup ()
Teken Boodskappe
>>> Van Twiggy invoer *
Hoof-koppelvlak is die die magic log:
>>> Teken #doctest: + beletselteken

Dit werk uit die boks, met behulp van standaard vlakke:
>>> Log.debug ('Jy mag nie omgee')
DEBUG: Jy mag nie omgee
>>> Log.error ('OMFG! Broek aan die brand gesteek! ")
FOUT: OMFG! Broek aan die brand!
Dit ondersteun 'n verskeidenheid van formaat snare, gebreke om nuwe-styl:
>>> Log.info ('Ek dra {0} op my {} waar "," broek ", waar =" bene ")
INFO: Ek dra broek op my bene
Ou styl werk goed al:
>>> Log.options (style = "persent). Info (" Ek wil% s ', "bikes")
INFO: Ek hou van bikes
Net soos templates:
>>> Log.options (style = "dollar). Info ('$ wat doodmaak, wat =' Cars ')
INFO: Cars doodmaak
Jy kan die naam van jou loggers:
>>> Mylog = log.name ('Alfredo')
>>> Mylog.debug ('hallo')
DEBUG: Alfredo: hello
Maar die naam het geen betrekking tot die voorwerp; dit is net vir menslike gebruik:
>>> Mylog is log.name ('Alfredo')
Valse
afgee Boodskappe
Emitters is losweg gekoppel:
>>> Twiggy.emitters #doctest: + beletselteken
{'*': }
Jy kan 'n min_level op emitters stel:
>>> Twiggy.emitters ['*']. Min_level = twiggy.Levels.INFO
>>> Log.debug ("Help, help Ek word onderdruk")
>>> Log.info ("Ek is nog nie heeltemal dood")
INFO: Ek is nog nie heeltemal dood
Jy kan filter op regexes, of met arbitrêre funksies:
>>> Twiggy.emitters ['*']. Filter = ". * Broek. *"
>>> Log.info ("Het jy my {0} op", "broek")
INFO: Het my broek op
>>> Log.info ("Het jy my {0} op", "hemp")
Kom ons stel almal wat:
>>> Twiggy.emitters ['*']. Filter = true
>>> Twiggy.emitters ['*']. Min_level = twiggy.Levels.DEBUG
Beter uitset
Newlines onderdruk by verstek; wat gebruik kan word afgeskakel per-boodskap:
>>> Log.info ('n gebruiker ninput nannoys nus ')
INFO: gebruiker ninput nannoys nus
>>> Log.options (suppress_newlines = False) Info ('ons ndeal')
INFO: ons
deal
Uitsonderings is voorafgegaan. Kan ook exc_info slaag. Gebruik ' n' as 'n voorvoegsel te vou in 'n enkele lyn:
>>> Probeer:
... 1/0
... Behalwe:
... Log.trace ('n fout ') waarskuwing ("O stemme teen') #doctest. + Beletselteken
WAARSKUWING: oh stemme teen
TRACE Stapelspoor (mees onlangse oproep laaste):
TRACE File "", lyn 2, in
TRACE 1/0
TRACE ZeroDivisionError: integer afdeling of modulo deur nul
Metode Aaneenskakeling
Ek hou van hierdie styl baie vasgeketting.
>>> Log.name ('Benito). Info (' hi daar)
INFO: Benito: hi daar
Dit maak gestruktureerde meld maklik:
>>> Log.fields (paaie = 42) Info ('Ontmoet vir drankies')
INFO: paaie = 42: Gaan vir 'n wandeling
Kortpad. Groot vir runtime statistieke byeenkoms.
>>> Log.struct (paaie = 42, dolfyne = 'dankbaar')
INFO: dolfyne = dankbaar: paaie = 42:
Gedeeltelike bindend kan wees bruikbare vir webapps:
>>> Per_request_log = log.fields (request_id = '12345')
>>> Per_request_log.fields (rye = 100, gebruikers = 'Frank). Info (' frobnicating databasis ')
INFO: request_id = 12345: rye = 100: gebruiker = Frank: frobnicating databasis
>>> Per_request_log.fields (grepe = 5678) Info ('stuur bladsy oor buise')
INFO: grepe = 5678: request_id = 12345: stuur bladsy oor buise
Vasgeketting styl is awesome:
>>> Log.name ('donjuan). Velde (broek =' sexy '). Info ("hello, {} wat wil {} wat?", Wat =' dames, wat = "dans")
INFO: donjuan: broek = sexy: hello, dames wil om te dans?
Dynamic!
Enige funksies in argumente / velde geroep en die waarde substitued:
>>> Invoer os
>>> Van twiggy.lib invoer thread_name
>>> Thread_name ()
'MainThread'
>>> Log.fields (pid = os.getpid) Info ("Ek is in draad {0}", thread_name) #doctest: + beletselteken
INFO: pid = 1076: Ek is in draad MainThread
Dit kan nuttig wees met gedeeltelik-gebonde loggers, wat laat is vir ons doen 'n paar cool stuff:
>>> Klas ThreadTracker (voorwerp):
... Def __init __ (self, obj):
... Self .__ obj = obj
... # 'N gedeeltelik gebind logger
... Self .__ meld = log.name ("tracker"). Velde (obj_id = id (obj), draad = thread_name)
... Self .__ log.debug ("begin die dop")
... Def __getattr __ (self, attr):
... Self .__ log.debug ("verkry {0}", attr)
... Terugkeer getattr (self .__ obj, attr)
...
>>> Klas Bunch (voorwerp):
... Slaag
...
>>> Cat = Bunch ()
>>> Foo.bar = 42
>>> Nagespoor = ThreadTracker (cat)
DEBUG: tracker: obj_id = 14063980: draad = MainThread: begin die dop
>>> Tracked.bar
DEBUG: tracker: obj_id = 14063980: draad = MainThread: toeganklik bar
42
>>> Invoer threading
>>> T = threading.Thread (target = lambda: tracked.bar * 2, name = "TheDoubler")
>>> T.start ()
DEBUG: tracker: obj_id = 14063980: draad = TheDoubler: toeganklik bar
As jy regtig wil 'n call able, repr teken () dit of draai dit in lambda.
optimalisaties
As 'n optimalisering, kan 'n min_level ingestel word op loggers:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("Jy sien hierdie")
INFO: Alfredo: Jy sien dit
>>> Mylog.debug ("Dit is verborge")
Hulle neem ook 'n filter wat werk op format_spec. Die gebruik geval is doeltreffend afskakel spesifieke boodskappe in 'n biblioteek wat iets onnosel doen:
>>> Mylog.filter = lambda s: "kaskenades" nie in s
>>> Mylog.info ("Begin dwaasheid")
INFO: Alfredo: Begin dwaasheid
>>> Vir i in xrange (3): # vir groot waardes van 3
... Mylog.info ("Ek noem kaskenades!")
>>> Mylog.info ("End dwaasheid")
INFO: Alfredo: End dwaasheid

Vereistes :

  • Python

Ander sagteware ontwikkelaar Peter Fein

Petapass
Petapass

11 May 15

Twiggy
Twiggy

12 Apr 15

Kommentaar te Twiggy

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!