wie loggt ihr?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

Mittwoch 7. November 2007, 21:50

Hi,

ich bin grade an einem neuen projekt und frage mich ob ich das logging system aus meinem letzten projekt übernehmen soll.

ich nutze den NEtzwerk-Logger aus
http://docs.python.org/lib/network-logging.html


dazu gibts das modul socket_logging.socket_logger_client:
(stellt einen root-logger zur verfügung der sich mit dem server unterhalten kann)

Code: Alles auswählen

import logging, logging.handlers

rootLogger = logging.getLogger('')
rootLogger.setLevel(logging.DEBUG)
socketHandler = logging.handlers.SocketHandler('localhost', logging.handlers.DEFAULT_TCP_LOGGING_PORT)
                    
rootLogger.addHandler(socketHandler)

logging.info('Logger initialized')

in einem modul definiere ich dann für alle module jeweils einen logger um zentral die log-levels einstellen zu können, modul logger_provider:

Code: Alles auswählen


import logging, socket_logging.socket_logger_client

socket_logging.socket_logger_client.rootLogger.setLevel(logging.DEBUG)

#get loggers for each module
logger_module_1 = logging.getLogger('module_1')  
#(...)
logger_module_n = logging.getLogger('module_n') 

#set log level for each module
logger_module_1.setLevel(logging.INFO)         
#(...)
logger_module_n.setLevel(logging.DEBUG)         
 
und in jedem modul wird dann der entsprechende logger geladen, modul_i:

Code: Alles auswählen

from logger_provider import logger_module_i as logger

ist das zu umständlich? wie macht ihr das?
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Donnerstag 8. November 2007, 11:13

Ich nutze auch den logger.
Blos ohne Netzwerk teil.

Wenn wirklich alle deine module loggen sollen, dann erstelle doch den logger und mach ein global draus, mit den richtigen einstellungen loggt er dir auch mit von wo er den call bekommen hat.


als formatter z.b.:
format=%(asctime)s - %(module)s - %(lineno)d - %(levelname)s - %(message)s
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

Donnerstag 8. November 2007, 12:09

aber dann kann ich die log-level nicht zentral verwalten.

zb für mod1 DEBUG und für MOD2 INFO
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Donnerstag 8. November 2007, 16:21

Hallo,

wenn du dir vielleicht eine Klasse schreibst, die mit mehreren logger Instanzen umgeht, müsstest du nur auf die Container-Klasse zugreifen.(Bin mir aber nicht sicher, ob ich dich richtig verstanden hab)
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
Antworten