Logpy

Unorthodox-logging voor Python
Download nu

Logpy Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • BSD License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Michal Hordecki
  • Uitgever website:
  • http://github.com/MHordecki

Logpy Tags


Logpy Beschrijving

Onorthodoxe logging voor Python LOGPY is een alternatief voor standaard Python-logging-faciliteiten, losjes gebaseerd op LISP's LOG5. Het is gebaseerd op kusbeginselen - daarom wilde ik dat het zo duidelijk mogelijk was. Het belangrijkste verschil in vergelijking met de logging van Stdlib is tag-gebaseerde architectuur. In het loggen heeft elk logboek een bepaald niveau toegewezen (of het debug, fout, enz.). Dat is alles. LOGPY, aan de andere kant, sporttags - u kunt korte snaren aan elk bericht bevestigen. Tag kan verschillende dingen vertegenwoordigen: ernstige niveau, module naam of sommige aangepaste log-indeling. Logpy vereist Python 2.6 of hoger. Het werkt ook naadloos op Python 3 (in feite, het is ontwikkeld met Py3k in gedachten en vervolgens backported to python 2.6) .grens begon het logpy is dood eenvoudig: van Logy Import LogpyImport Syslog = Logpy () Log.add_output (Sys.Stderr.Write ) Log ('Debug') ('Hallo World!') Voila! Logpy-instanties zijn vulbaar. Als u een logboek wilt uitvoeren, kunt u "tweemaal" - in de eerste gesprek alle tags van het logboek passeren en alles is doorgegeven aan de tweede wordt beschouwd als een deel van het bericht. Het voorbeeld zal het logboeken uitvoeren op de standaardfoutuitvoer. Gemakkelijk, is het niet? Onder de Hoodlogpy heeft een paar lagen abstractie: 1. Logpy - het accepteert gegevens van de gebruiker, combineert ze in een berichtinstantie en geeft ze door op alle uitgangen. 2. Uitvoer - het filtert berichten op basis van enkele vooraf gedefinieerde omstandigheden en als het bericht ze allemaal passeert, is het opgemaakt door de formatter en vervolgens doorgegeven aan de werkelijke uitvoer. 3. Formatter - neemt een bericht en formatteert het;) (in standaard implementatie gebruikt het string.format voor de taak). 4. Werkelijke output - een vulbaar dat, bijvoorbeeld, de uitvoer van de formatter naar het scherm uitvoert. Alleen die lagen / objecten zijn callleutelscommon tasksOutput-filtering met meerdere uitgangen, u wilt waarschijnlijk een aantal logboeken in elk van deze filteren. Daar is ondersteuning voor: Log = Logpy () log.add_output (my_output, filter = lambda m: 'Fout' in m.tags) # equivalent aan: log.add_output (my_output, filter = ) Zoals u kunt zien, zijn filters bellenteel, het nemen van een berichtobject als een argument en retournerende bool. Meerdere filters kunnen worden geleverd door een lijst. Custom-formattering kan opmaak aanpassen door de opmaakstring te vervangen of door het opmaakobject helemaal te vervangen. Uw keuze.Custom-formaat StringDeze komt er 90% van uw behoeften aan. U kunt uw formaatstring wijzigen met trefwoordargument voor de add_output-methode van LOGPY (ook mogelijk bij het direct instantiëren van uitvoerobjecten): log.add_output (..., formatter = 'mijn aangepaste formaatstring!') Bij het verwerken van een bericht, methode-formaat Van de tekenreeks wordt genoemd met de volgende, vooraf gedefinieerde argumenten: * Datum - DateTime Object * Tags - Space-gescheiden lijst van tags (tekenreeks) * args - lijst van argumenten in het bericht * KWARGS - DICT van trefwoordargumenten in het bericht * Bericht * - het daadwerkelijke berichtobject. Alle argumenten hierboven zijn eigenlijk slechts een syntactische suiker, omdat ze alle kenmerken van dit object zijn.Default-indelingsnoer ziet er als volgt uit: {datum}: {tags}: {args} {kwargs} \ Ndon niet vergeet om een nieuwe lijn te doen Het einde, of uw logboeken zullen er kreupeld uitzien. Working met meerdere modules. Kan uzelf helpen tijdens het gebruik van Logpy met meerdere modules door een aantal van de tags te vooraf definiëren: # Hoofdmodulelog = Logpy () # KindermoduleMport MainModulelog = Mainmodule.log ('Module: kindermodule ', Curry = True) # NU: log (' debug ') (' Hallo World! ') # is equivalent tolog (' Module: childmodule ',' debug ') (' Hallo World ') Custom Format Objectin Case You Want VOLLEDIGE POWER - U kunt de standaard formatter: log.add_output (..., formatter = my_formatter_object) formatter Objecten moeten voldoen aan het Simple Protocol: Klasse Formatter: DEF __CALL __ (bericht: bericht) -> Angens redelijk: passclassbericht : Tags = Set (Str) Args = [] # doorgegeven door de gebruiker KWARGS = {} # doorgegeven door de gebruikersdatum = datetime.datetime (ik heb geen idee Als er een standaard formele notatie is voor het beschrijven van protocollen in Python, zoals Zope.interface. Ik hoop dat mijn ramblings duidelijk zijn.) Waar iets redelijk betekent: alles dat wordt geaccepteerd door de output van de uitgang (klinkt een beetje dom) - het betekent meestal str, maar niet altijd.Custom output-objectief dat je bereid bent om 50% te schrappen van de LOC van LOGPY, voel je vrij om dat te doen: log.add_raw_output (my_customized_output_Object) Het vermelden waard is het feit dat Logpy.add_output slechts een wrapper is voor: log.add_output (...) # equivalent tolog.Add_raw_output (output ( ..)) Outputprotocol ziet er als volgt uit: Klasse-uitvoer: Def __Call __ (bericht: bericht): Passin Andere woorden: u wordt bij elk door de gebruiker uitgegeven logboek gebeld: behandel berichten als onveranderlijke objecten. hergebruikt voor alle outputs.Thread SafetyLogpy gebruikt wat basisdraadveiligheid; Een threading.lock wordt gebruikt in __Call__-methode van LOGPY. Het kan eenvoudig worden vervangen: van threading import rlocklog = logpy () log.lock = rlock () vereisten: · Python


Logpy Gerelateerde software