Twiggy

Logiciel capture d'écran:
Twiggy
Détails logiciels:
Version: 0.4.4
Date de transfert: 11 May 15
Développeur: Peter Fein
Licence: Gratuit
Popularité: 1

Rating: nan/5 (Total Votes: 0)

Twiggy est un projet à un stade précoce pour construire un paquet de journalisation plus Pythonic.
Utilisation:
Rendre le travail d'affichage:
>>> import sys; sys.stderr = sys.stdout
La configuration est simple
Dans votre main.py:
>>> Twiggy d'importation
>>> Twiggy.quick_setup ()
Messages de journalisation
>>> From twiggy import *
Interface principale est le journal magique:
>>> Connecter #doctest: + ELLIPSIS

Il fonctionne hors de la boîte, en utilisant différents niveaux de qualité:
>>> Log.debug («Vous ne pouvez pas prendre soin»)
DEBUG: Vous ne pouvez pas prendre soin
>>> Log.error («OMFG! Pantalon en feu!»)
Erreur: OMFG! Pantalons en feu!
Il prend en charge une variété de chaînes de format, par défaut nouveau style:
>>> Log.info ('je porte {0} sur mon {} où »,« pantalon », où =« jambes »)
INFO: Je porte un pantalon sur mes jambes
Old style fonctionne bien mais:
>>> Log.options (style = 'pour cent). Info ("Je veux% s», «tulipes»)
INFO: I like vélos
Comme faire des modèles:
>>> Log.options (style = 'dollar'). Info ("$ ce kill ', ce qui =' Cars ')
INFO: La voiture tue
Vous pouvez nommer vos enregistreurs:
>>> Mylog = log.name ('alfredo')
>>> Mylog.debug («bonjour»)
DEBUG: alfredo: bonjour
Mais le nom n'a aucun rapport avec l'objet; il est juste à usage humain:
>>> Mylog est log.name ('alfredo')
Faux
émission de messages
Les émetteurs sont faiblement couplés:
>>> Twiggy.emitters #doctest: + ELLIPSIS
{'*': }
Vous pouvez définir une min_level sur les émetteurs:
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.INFO
>>> Log.debug ("Aide, aide je être supprimée»)
>>> Log.info ("Je ne suis pas encore mort»)
INFO: Je ne suis pas tout à fait encore mort
Vous pouvez filtrer sur les expressions rationnelles, ou avec des fonctions arbitraires:
>>> twiggy.emitters ['*']. filter = ". *. *" pantalon
>>> Log.info ("Got my {0} sur», «pantalon»)
INFO: Got mon pantalon
>>> Log.info ("Got my {0} sur", "chemise")
Disons réinitialiser tout cela:
>>> twiggy.emitters ['*']. filter = Vrai
>>> twiggy.emitters ['*']. min_level = twiggy.Levels.DEBUG
Mieux sortie
Les nouvelles lignes sont supprimées par défaut; qui peut être désactivée par message:
>>> Log.info ('user NINPUT nannoys nus »)
INFO: user NINPUT nannoys nus
>>> log.options (suppress_newlines = false) .info («nous ndeal ')
INFO: nous
affaire
Des exceptions sont préfixés. Peut également passer exc_info. Utilisez ' n' comme préfixe à plier en une seule ligne:
>>> Essai:
... 1/0
... Sauf:
... Log.trace («erreur») avertissement («oh chutes de neige») #doctest:. + ELLIPSIS
AVERTISSEMENT: oh chutes de neige
TRACE d'enquête (le plus récent appel de dernière):
fichier de trace "", la ligne 2, en
TRACE 1/0
TRACE ZeroDivisionError: division entière par zéro ou modulo
Méthode chaînage
Je aime ce style enchaîné un lot.
>>> Log.name ('Benito'). Info ("salut là»)
INFO: Benito: salut il
Il rend journal structuré facile:
>>> log.fields (chemins = 42) .info («Faire une promenade ')
INFO: chemins = 42: Faire une promenade
Coupe courte. Idéal pour les statistiques d'exécution rassemblement.
>>> Log.struct (chemins = 42, dauphins = 'reconnaissants')
INFO: dauphins = reconnaissants: chemins = 42:
Liaison partielle peut être utile pour webapps:
>>> Per_request_log = log.fields (request_id = '12345')
>>> Per_request_log.fields (lignes = 100, user = 'frank'). Info ("frobnicating base de données ')
INFO: request_id = 12345: lignes = 100: mode = franche: base de données frobnicating
>>> per_request_log.fields (octets = 5678) .info ('envoyer la page sur les tubes')
INFO: octets = 5678: request_id = 12345: envoyer la page sur les tubes
Le style Enchaîné est impressionnant:
>>> ('Sexy' pantalons =). Renseignements champs de log.name ('donjuan'). ("Bonjour, {} qui veulent {} ce?", Qui = «dames», ce qui = 'danse')
INFO: Donjuan: pantalons = sexy: bonjour, mesdames veulent danser?
Dynamique!
Toutes les fonctions dans args / champs sont appelés et la valeur substitué:
>>> import os
>>> From twiggy.lib importation thread_name
>>> Thread_name ()
'MainThread'
>>> log.fields (pid = os.getpid) .info («Je suis en fil {0}", thread_name) #doctest: + ELLIPSIS
INFO: pid = 1076: Je suis en fil MainThread
Cela peut être utile avec les bûcherons partiellement liés, qui nous allons nous faisons des trucs cool:
>>> ThreadTracker de classe (objet):
... Def __init __ (self, obj):
... Self .__ obj = obj
... # Un enregistreur partiellement lié
... Self .__ log = log.name («tracker»). Champs (obj_id = id (obj), thread = thread_name)
... Self .__ log.debug ("a commencé à suivre»)
... __getattr Def __ (self, attr):
... Self .__ log.debug ("consultée {0}", attr)
... Retour getattr (self .__ obj, attr)
...
>>> Classe Bunch (objet):
... Passer
...
>>> Foo = Bunch ()
>>> Foo.bar = 42
>>> Suivis = ThreadTracker (foo)
DEBUG: Tracker: obj_id = 14063980: thread = MainThread: a commencé à suivre
>>> Tracked.bar
DEBUG: Tracker: obj_id = 14063980: thread = MainThread: bar consultée
42
>>> Filetage d'importation
>>> T = threading.Thread (target = lambda: tracked.bar * 2, name = "TheDoubler")
>>> T.start ()
DEBUG: Tracker: obj_id = 14063980: thread = TheDoubler: bar consultée
Si vous voulez vraiment vous déconnecter un appelable, repr () ou l'envelopper dans lambda.
Optimisations
Comme une optimisation, une min_level peut être réglé sur les enregistreurs:
>>> Mylog.min_level = twiggy.Levels.INFO
>>> Mylog.info ("Vous voyez cette")
INFO: alfredo: Vous voyez ce
>>> Mylog.debug ("Ceci est caché")
Ils prennent également un filtre qui fonctionne sur format_spec. Le cas d'utilisation est efficacement ferme pas des messages spécifiques dans une bibliothèque qui est en train de faire quelque chose de stupide:
>>> Mylog.filter = lambda s: "magouilles" pas dans s
>>> Mylog.info («Démarrage bêtise»)
INFO: alfredo: bêtise partir
>>> For i in xrange (3): # pour les grandes valeurs de 3
... Mylog.info («Je appellent magouilles!")
>>> Mylog.info ("End bêtise»)
INFO: alfredo: bêtise de fin

Exigences :

  • Python

D'autres logiciels de développeur Peter Fein

Twiggy
Twiggy

12 Apr 15

Petapass
Petapass

11 May 15

Commentaires à Twiggy

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!