Twiggy

Screenshot der Software:
Twiggy
Softwarebeschreibung:
Version: 0.4.4
Upload-Datum: 11 May 15
Entwickler: Peter Fein
Lizenz: Frei
Popularität: 6

Rating: nan/5 (Total Votes: 0)

Twiggy ist ein Frühphasen-Projekt, um eine Pythonic Protokollierung Paket zu erstellen.
Usage:
Machen Display Arbeit:
>>> Import sys; sys.stderr = sys.stdout
Die Installation ist einfach
In Ihrem main.py:
>>> Import twiggy
>>> Twiggy.quick_setup ()
Abmelden Nachrichten
>>> Von twiggy import *
Hauptschnittstelle ist die Magie log:
>>> Bitte einloggen #doctest: + ELLIPSIS

Es funktioniert out of the box, mit Standard-Ebenen:
>>> Log.debug ("Sie können mir egal")
DEBUG: Sie mag es egal sein
>>> Log.error ("OMFG! Hosen auf Feuer! ')
ERROR: OMFG! Hosen auf Feuer!
Es unterstützt eine Vielzahl von Formatstrings, standardmäßig auf neuen Stil:
>>> Log.info ("Ich trage {0} auf meinem {}, wo", "Hosen", wo = "Beine")
INFO: Ich trage Hosen auf den Beinen
Old style funktioniert aber:
>>> Log.options (style = "Prozent"). Info ("Ich mag% s '," Fahrräder ")
INFO: Ich mag Motorräder
Wie tun Vorlagen:
>>> Log.options (style = "Dollar") info. ('$, Was zu töten ", was =' Cars ')
INFO: Autos töten
Sie können Ihre Logger zu nennen:
>>> Mylog = log.name ('alfredo')
>>> Mylog.debug ("Hallo")
DEBUG: Alfredo: hallo
Aber der Name in keinem Zusammenhang mit dem Objekt; es ist nur zur Anwendung beim Menschen:
>>> Mylog ist log.name ('alfredo')
Falsch
Ausstrahlen von Nachrichten
Strahler sind lose gekoppelt:
>>> Twiggy.emitters #doctest: + ELLIPSIS
{'*': }
Sie können eine min_level am Emitter eingestellt:
>>> Twiggy.emitters ['*']. Min_level = twiggy.Levels.INFO
>>> Log.debug ("Hilfe, Hilfe ich bin unterdrückt")
>>> Log.info ("Ich bin noch nicht ganz tot")
INFO: Ich bin mir noch nicht ganz tot
Sie können über reguläre Ausdrücke, oder mit beliebigen Funktionen auswählen:
>>> Twiggy.emitters ['*']. Filter = ". * Hose. *"
>>> Log.info ("Got my {0}", "Hosen")
INFO: Haben Sie meine Hosen an
>>> Log.info ("Got my {0}", "Shirt")
Lassen Sie uns alles zurückzusetzen:
>>> Twiggy.emitters ['*']. Filter = True
>>> Twiggy.emitters ['*']. Min_level = twiggy.Levels.DEBUG
Bessere Ausgangs
Zeilenumbrüche werden standardmäßig unterdrückt; dass off per-Nachricht eingeschaltet werden:
>>> Log.info ('user NINPUT nannoys nus)
INFO: user NINPUT nannoys nus
>>> Log.options (suppress_newlines = False) .info ("wir Ndeal ')
INFO: wir
Deal
Ausnahmen sind vorangestellt. Kann auch exc_info passieren. Verwenden Sie ' n' als Präfix, um in einer einzigen Zeile klappen:
>>> Try:
... 1/0
... Außer:
... Log.trace ("Fehler") Warnung ("Oh nein") #doctest.: + ELLIPSIS
WARNUNG: Oh nein
TRACE Traceback (jüngste Aufforderung zuletzt):
Trace-Datei "", Linie 2,
TRACE 1/0
TRACE Zerodivisionerror: Integer-Division durch Null oder Modulo-
Method Chaining
Ich mag diesen Stil gefesselt viel.
>>> Log.name ("Benito"). Info ("hallo dort")
INFO: benito: Hallo zusammen
Es macht einfach strukturierte Protokollierung:
>>> Log.fields (Pfade = 42) .info ("Spazieren")
INFO: Pfade = 42: Spazieren gehen
Abkürzung. Sehr geeignet für Laufzeitstatistiken sammeln.
>>> Log.struct (Pfade = 42, Delphine = 'dankbar')
INFO: Delphine = dankbar: Pfade = 42:
Teil Bindung kann für webapps nützlich sein:
>>> Per_request_log = log.fields (request_id = '12345')
>>> Per_request_log.fields (rows = 100, user = 'frank'). Info ('frobnicating Datenbank')
INFO: request_id = 12345: Reihen = 100: user = frank: frobnicating Datenbank
>>> Per_request_log.fields (Byte = 5678) .info ('Senden Seite über Rohre)
INFO: Bytes = 5678: request_id = 12345: Senden Seite über Rohre
Angekettet Stil ist genial:
>>> Log.name ('donjuan'). Felder (pants = 'sexy'). Info ("Hallo, {}, die wollen, {}, was?", Der = "Damen", was = 'Tanz')
INFO: donjuan: pants = sexy: hallo, möchte Damen zu tanzen?
Dynamische!
Alle Funktionen in args / Felder sind aufgerufen und der Wert substituiert:
>>> Import os
>>> Von twiggy.lib import thread_name
>>> Thread_name ()
"Mainthread '
>>> Log.fields (pid = os.getpid) .info ("Ich bin in Thread {0}", thread_name) #doctest: + ELLIPSIS
INFO: pid = 1076: Ich bin in thread Mainthread
Dies kann nützlich sein, mit teilweise gebundene Unternehmer, die es uns tun ein paar coole Sachen lassen:
>>> Class ThreadTracker (Objekt):
... Def __init __ (self, obj):
... Self .__ obj = obj
... # Eine teilweise gebunden Logger
... Self .__ log = log.name ("tracker"). Felder (OBJ_ID = id (obj), Gewinde = thread_name)
... Self .__ log.debug («ist der Autor Tracking")
... Def __getattr __ (self, attr):
... Self .__ log.debug ("abgerufen {0}", attr)
... Rückkehr getattr (self .__ obj, attr)
...
>>> Class Bunch (Objekt):
... Übergeben
...
>>> Foo = Bunch ()
>>> Foo.bar = 42
>>> Verfolgt = ThreadTracker (foo)
DEBUG: tracker: OBJ_ID = 14063980: thread = Mainthread: begann Tracking
>>> Tracked.bar
DEBUG: tracker: OBJ_ID = 14063980: thread = Mainthread: abgerufen bar
42
>>> Import threading
>>> T = threading.Thread (target = lambda: tracked.bar * 2 name = "TheDoubler")
>>> T.start ()
DEBUG: tracker: OBJ_ID = 14063980: thread = TheDoubler: abgerufen bar
Wenn Sie wirklich wollen, um eine Callable, repr log () es oder wickeln Sie sie in Lambda.
Optimierungen
Zur Optimierung kann eine min_level auf Logger festgelegt werden:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("Sie sehen diese")
INFO: Alfredo: Sie sehen dies
>>> Mylog.debug ("Das ist versteckt")
Sie nehmen auch einen Filter, der auf format_spec betreibt. Der Anwendungsfall effizient Absperren bestimmte Nachrichten in einer Bibliothek, die etwas Dummes zu tun ist:
>>> Mylog.filter = lambda s: "Spielereien" nicht in s
>>> Mylog.info ("Starten Albernheit")
INFO: Alfredo: ab silliness
>>> For i in xrange (3): # für große Werte von 3
... Mylog.info ("Ich nenne Shenanigans!")
>>> Mylog.info ("Albernheit Ende")
INFO: Alfredo: End Albernheit

Anforderungen :

  • Python

Andere Software von Entwickler Peter Fein

Twiggy
Twiggy

12 Apr 15

Petapass
Petapass

11 May 15

Kommentare zu Twiggy

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!