Wie fetch-Prozess,thread-Namen,levelname in kundenspezifische python-logger
Ich entwickle maßgeschneiderte logger-Programm,wie pro die Anforderung, die ich brauche zu Holen, der Prozess,thread und den Namen des Objekts Innerhalb der Funktion(Im Beispiel unten seine obj abrufen muss innerhalb der get_configured_logger-Funktion) und den Klassennamen, zu dem obj gehört. wie gezeigt mit Kommentaren im code unten, bitte geben Sie einige Ideen, um dies zu erreichen.
import logging, logging.handlers
from logging import StreamHandler, Formatter
class A:
def get_configured_logger(self,name):
logger = logging.getLogger(name)
if (len(logger.handlers) == 0):
FORMAT = "%(process)s %(thread)s:-(asctime)s - %(name)s - %(levelname)s - %(message)-%(module)"
#print 'process:',process
#print 'thread:',thread
#print 'levelname:',levelname
#print 'Module:',(name portion of filename).
#print 'obj:,'name of the object(Eg:obj),current function( Eg: get_configured_logger) called by'
#print 'class name:(obj is instance of class)'
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
return logger
if __name__=="__main__":
obj=A()
logger = obj.get_configured_logger("DEMO")
logger.debug("TEST")
Dank
hema
InformationsquelleAutor user1559873 | 2012-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Beurteilung der aktuellen Prozess - /thread-Namen, um eine log-Nachricht, die Sie könnte angeben im format-string:
Als Streicher:
ident
Attribut, für das erhalten der thread-id. Für den aktuellen Prozess, den ich in der Regel verwendenos.getpid()
InformationsquelleAutor jfs
Thread-Namen
Den Dokumentation beschreibt eine einfache Schnittstelle zum Zugriff auf die aktuellen
Thread
können Sie dann mit seinenname
- Attribut auf den Thread-Namen.Können Sie dann verwenden:
Bewusst sein, dass es nicht eindeutig ist.
Prozess name
Es gibt keinen einfachen Weg, um den Prozess-Namen als diese ist abhängig von der Betriebssystem Sie verwenden. Sie können sich allerdings die Prozess-ID (
pid
) zu tun:Ist, es sei denn, Sie sind mit der
multiprocessing
Modul und starten Teilprozesse, in dem Fall können Sie diemultiprocessing
Modul stellt eine Schnittstelle sehr ähnlich zu der desThreading
Modul.InformationsquelleAutor Thomas Orozco