Twiggy

Software screenshot:
Twiggy
Software detaljer:
Version: 0.4.4
Upload dato: 11 May 15
Udvikler: Peter Fein
Licens: Gratis
Popularitet: 1

Rating: nan/5 (Total Votes: 0)

Twiggy er en tidlig fase projekt om at bygge en mere Pythonic logning pakke.
Anvendelse:
Lav display arbejde:
>>> sys import; sys.stderr = sys.stdout
Opsætning er enkel
I dit main.py:
>>> Import twiggy
>>> Twiggy.quick_setup ()
Logning meddelelser
>>> Fra twiggy import *
Vigtigste interface er den magiske log:
>>> Logge #doctest: + Ellipse

Det virker ud af boksen, ved anvendelse af standard niveauer:
>>> Log.debug ('Du må ikke pleje ")
DEBUG: Du må ikke bekymre sig
>>> Log.error (OMFG! Pants i brand! ")
FEJL: OMFG! Bukser i brand!
Det understøtter en bred vifte af formatstrenge, misligholdende til ny-style:
>>> Log.info ("jeg bære {0} på min {hvor} ',' bukser ', hvor =' ben ')
INFO: Jeg bære bukser på mine ben
Gamle stil virker fint selvom:
>>> Log.options (style = 'procent'). Info ("Jeg kan lide% s '," cykler ")
INFO: Jeg kan lide cykler
Som gør skabeloner:
>>> Log.options (style = "dollar"). Info ('$ hvad kill', hvad = 'Biler')
INFO: Biler dræbe
Du kan navngive dine loggere:
>>> Mylog = log.name ('alfredo)
>>> Mylog.debug ("hello")
DEBUG: alfredo: hej
Men navnet har ingen relation til objektet; det er bare for human brug:
>>> Mylog er log.name (alfredo)
Falsk
Emitting meddelelser
Udledere er løst koblet:
>>> Twiggy.emitters #doctest: + Ellipse
{'*': }
Du kan indstille en min_level på Sendere:
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.INFO
>>> Log.debug ("Hjælp, hjælp, jeg bliver undertrykt")
>>> Log.info ("Jeg er ikke helt død endnu")
INFO: Jeg er ikke helt død endnu
Du kan filtrere på regexes eller med vilkårlige funktioner:
>>> twiggy.emitters ['*']. filter = ". * bukser. *"
>>> Log.info ("Got min {0} på", "bukser")
INFO: Fik mine bukser på
>>> Log.info ("Got min {0} på", "shirt")
Lad os nulstiller alle, at:
>>> twiggy.emitters ['*']. filter = True
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.DEBUG
Bedre output
Nye linjer undertrykkes som standard; der kan slås fra per-besked:
>>> Log.info ("bruger ninput nannoys nus ')
INFO: user ninput nannoys nus
>>> log.options (suppress_newlines = false) .info ("vi ndeal ')
INFO: Vi
deal
Undtagelser er præfikset. Kan også videregive exc_info. Brug ' n' som præfiks til at folde ind i en enkelt linje:
>>> Prøve:
... 1/0
... Undtagen:
... Log.trace ("fejl") advarsel ("oh ekspertisenet") #doctest:. + Ellipse
ADVARSEL: oh ekspertisenet
TRACE Tilbagesporing (seneste opkald sidste):
TRACE File "", linje 2, i
TRACE 1/0
TRACE ZeroDivisionError: integer division eller modulo med nul
Metode Chaining
Jeg kan lide denne lænket stil en masse.
>>> Log.name (benito «). Info (" Hej der «)
INFO: benito: hi there
Det gør struktureret logning let:
>>> log.fields (stier = 42) .info ("Going for en tur")
INFO: stier = 42: Going for en tur
Genvej. Great for runtime statistik indsamling.
>>> Log.struct (stier = 42, delfiner = 'taknemmelige')
INFO: delfiner = taknemmelige: stier = 42:
Partiel binding kan være nyttige for webapps:
>>> Per_request_log = log.fields (request_id = '12345')
>>> Per_request_log.fields (rækker = 100, bruger = 'frank'). Info ('frobnicating database «)
INFO: request_id = 12345: rækker = 100: user = frank: frobnicating database
>>> per_request_log.fields (byte = 5678) .info (sende side i løbet af rør)
INFO: bytes = 5678: request_id = 12345: at sende side i rør
Chained stil er awesome:
>>> Log.name (donjuan "). Felter (bukser =" sexet "). Info (" Hej, {som} ønsker at {hvad}? ", Som = 'damer, hvad =' dans ')
INFO: donjuan: bukser = sexet: hej, kære ønsker at danse?
Dynamic!
Eventuelle funktioner i args / felter kaldes og værdien 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 nyttigt med delvist bundne loggere, som lader os gøre nogle seje ting:
>>> Klasse ThreadTracker (objekt):
... Def __init __ (self, obj):
... Selv .__ obj = obj
... # En delvist bundet logger
... Selv .__ logge = log.name ("tracker"). Felter (obj_id = id (obj), gevind = thread_name)
... Selv .__ log.debug ("startede sporing")
... Def __getattr __ (self, attr):
... Selv .__ log.debug ("adgang {0}", attr)
... Tilbagevenden getattr (self .__ obj, attr)
...
>>> Klasse Bunch (objekt):
... Pass
...
>>> Foo = Bunch ()
>>> Foo.bar = 42
>>> Spores = ThreadTracker (foo)
DEBUG: tracker: obj_id = 14063980: gevind = MainThread: begyndte sporing
>>> Tracked.bar
DEBUG: tracker: obj_id = 14063980: gevind = MainThread: tilgås bar
42
>>> Import gevindskæring
>>> T = threading.Thread (target = lambda: tracked.bar * 2, name = "TheDoubler")
>>> T.start ()
DEBUG: tracker: obj_id = 14063980: gevind = TheDoubler: tilgås bar
Hvis du virkelig ønsker at logge en konverterbar, Repr () det eller pak det ind i lambda.
optimeringer
Som en optimering, kan en min_level indstilles på loggere:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("Du ser denne")
INFO: alfredo: Du ser dette
>>> Mylog.debug ("Dette er skjult")
De tager også et filter, der opererer på format_spec. Brugen tilfælde effektivt lukke specifikke budskaber i et bibliotek, der gør noget dumt:
>>> Mylog.filter = lambda s: "narrestreger" ikke i s
>>> Mylog.info ("Start dumhed")
INFO: alfredo: Fra dumhed
>>> For jeg i xrange (3): # for store værdier af 3
... Mylog.info ("Jeg kalder balladen!")
>>> Mylog.info ("End dumhed")
INFO: alfredo: End dumhed

Krav :

  • Python

Andre software developer Peter Fein

Petapass
Petapass

11 May 15

Twiggy
Twiggy

12 Apr 15

Kommentarer til Twiggy

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!