Twiggy

Skjermbilde programvare:
Twiggy
Prog.varedetaljer:
Versjon: 0.4.4
Last opp dato: 11 May 15
Utvikler: Peter Fein
Lisens: Gratis
Popularitet: 1

Rating: nan/5 (Total Votes: 0)

Twiggy er et tidlig stadium prosjekt for å bygge en mer Pytonske logging pakken.
Bruk:
Gjør skjerm arbeid:
>>> import sys; sys.stderr = sys.stdout
Installasjonen er enkel
I din main.py:
>>> Import Twiggy
>>> Twiggy.quick_setup ()
Logging Meldinger
>>> Fra Twiggy import *
Hovedgrensesnittet er den magiske loggen:
>>> Logge #doctest: + ellipse

Det fungerer ut av boksen, ved hjelp av standard nivåer:
>>> Log.debug ('Du kan ikke bryr seg')
DEBUG: Du kan ikke bryr
>>> Log.error ('OMFG! Pants on fire! ")
FEIL: OMFG! Pants on fire!
Den støtter en rekke formater strenger, misligholde til ny stil:
>>> Log.info ('jeg bruke {0} på min {hvor}', 'bukser ", der =' ben ')
INFO: Jeg bukser på beina
Gammel stil fungerer fint selv:
>>> Log.options (style = 'prosent'). Info ("Jeg liker% s '," sykler ")
INFO: Jeg liker sykler
Som gjør maler:
>>> Log.options (style = "dollar"). Info ('$ hva kill', hva = 'Cars')
INFO: Biler drepe
Du kan kalle dine loggere:
>>> Mylog = log.name ('alfredo')
>>> Mylog.debug ("hei")
DEBUG: alfredo: hallo
Men navnet har ingen relasjon til objektet; det er bare for menneskelig bruk:
>>> Mylog er log.name ('alfredo')
False
bestrålt Meldinger
Emittere er løst koplet:
>>> Twiggy.emitters #doctest: + ellipse
{'*': }
Du kan angi en min_level på Sendere:
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.INFO
>>> Log.debug ("Hjelp, hjelp jeg blir undertrykt")
>>> Log.info ("Jeg er ikke helt død ennå")
INFO: Jeg er ikke helt død ennå
Du kan filtrere på regexes, eller med vilkårlige funksjoner:
>>> twiggy.emitters ['*']. filter = ". * bukser. *"
>>> Log.info ("Fikk min {0} på", "bukser")
INFO: Fikk buksa på
>>> Log.info ("Fikk min {0} på", "skjorte")
La oss tilbakestille alt som:
>>> twiggy.emitters ['*']. filter = True
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.DEBUG
Bedre utgang
Linjeskift undertrykkes som standard; som kan være slått av per-melding:
>>> Log.info ('user ninput nannoys nus')
INFO: bruker ninput nannoys nus
>>> log.options (suppress_newlines = false) .info ("vi ndeal ')
INFO: vi
avtale
Unntak er prefiks. Kan også passere exc_info. Bruk ' n' som prefiks til å kaste seg inn i en enkelt linje:
>>> Prøve:
... 1/0
... Bortsett fra:
... Log.trace ('feil') advarsel ('oh noes') #doctest:. + Ellipse
ADVARSEL: oh noes
TRACE Traceback (siste samtale sist):
TRACE File "", linje 2,
TRACE 1/0
TRACE ZeroDivisionError: integer divisjon eller modulo med null
Metode Chaining
Jeg liker denne lenket stilen mye.
>>> Log.name ('benito'). Info ('hi there')
INFO: Benito: hi there
Det gjør strukturert logging enkelt:
>>> log.fields (stier = 42) .info ('Going for en tur')
INFO: baner = 42: Going for en tur
Short cut. Flott for runtime statistikk sammenkomst.
>>> Log.struct (stier = 42, delfiner = 'takknemlig')
INFO: delfiner = takknemlig: stier = 42:
Delvis binding kan være nyttig for webapps:
>>> Per_request_log = log.fields (request_id = '12345')
>>> Per_request_log.fields (rader = 100, user = 'frank'). Info ('frobnicating database')
INFO: request_id = 12345: p = 100: user = frank: frobnicating database
>>> per_request_log.fields (bytes = 5678) .info ('sende arket rør')
INFO: bytes = 5678: request_id = 12345: sende arket rør
Lenket stil er awesome:
>>> Log.name ('DonJuan'). Felt (bukser = 'sexy'). Info ("Hei, {som} vil {hva}?", Som = 'ladies', hva = 'dance')
INFO: DonJuan: bukser = sexy: hei, damer ønsker å danse?
Dynamic!
Alle funksjoner i args / felt er kalt og verdien substitued:
>>> import os
>>> Fra twiggy.lib import thread_name
>>> Thread_name ()
'MainThread'
>>> log.fields (pid = os.getpid) .info ("Jeg er i tråd {0}", thread_name) #doctest: + ellipse
INFO: pid = 1076: Jeg er i tråd MainThread
Dette kan være nyttig med delvis bundet loggere, som la oss gjøre noen kule ting:
>>> Klasse ThreadTracker (objekt):
... Def __init __ (selv, obj):
... Selv .__ obj = obj
... # En delvis bundet logger
... Selv .__ logge = log.name ("tracker"). Felt (obj_id = id (obj), tråd = thread_name)
... Selv .__ log.debug ("startet sporing")
... Def __getattr __ (selv, attr):
... Selv .__ log.debug ("vist {0}", attr)
... Retur getattr (selv .__ obj, attr)
...
>>> Klasse Bunch (objekt):
... Pass
...
>>> Foo = Bunch ()
>>> Foo.bar = 42
>>> Spores = ThreadTracker (foo)
DEBUG: tracker: obj_id = 14063980: thread = MainThread: startet sporing
>>> Tracked.bar
DEBUG: tracker: obj_id = 14063980: thread = MainThread: aksesseres bar
42
>>> Import threading
>>> T = threading.Thread (target = lambda: tracked.bar * 2, name = "TheDoubler")
>>> T.start ()
DEBUG: tracker: obj_id = 14063980: thread = TheDoubler: aksesseres bar
Hvis du virkelig ønsker å logge en callable, repr () den eller pakk den i lambda.
Optimaliseringer
Som en optimalisering, kan en min_level settes på loggere:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("Du ser dette")
INFO: alfredo: Du ser dette
>>> Mylog.debug ("Dette er skjult")
De tar også et filter som opererer på format_spec. Bruken Saken er effektivt stenge av enkelte meldinger i et bibliotek som gjør noe dumt:
>>> Mylog.filter = lambda s: "ugagn" ikke s
>>> Mylog.info ("Starte dumhet")
INFO: alfredo: Starter dumhet
>>> For i i xrange (3): # for store verdier av tre
... Mylog.info ("Jeg kaller shenanigans!")
>>> Mylog.info ("End dumhet")
INFO: alfredo: End dumhet

Krav

  • Python

Annen programvare fra utvikleren Peter Fein

Twiggy
Twiggy

12 Apr 15

Petapass
Petapass

11 May 15

Kommentarer til Twiggy

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!