Package conduit :: Module Logging
[hide private]

Source Code for Module conduit.Logging

 1  import os 
 2  import logging 
 3  import conduit 
 4   
 5  # Custom logger class with multiple destinations 
6 -class ConduitLogger(logging.Logger):
7 FORMAT = "[%(name)-20s][%(levelname)-7s] %(message)s (%(filename)s:%(lineno)d)" 8 LOG_FILE_HANDLER = None
9 - def __init__(self, name):
10 try: 11 level = getattr(logging,os.environ.get('CONDUIT_LOGLEVEL','DEBUG')) 12 except AttributeError: 13 level = logging.DEBUG 14 logging.Logger.__init__(self, name, level) 15 16 #Add two handlers, a stderr one, and a file one 17 formatter = logging.Formatter(ConduitLogger.FORMAT) 18 19 #create the single file appending handler 20 if ConduitLogger.LOG_FILE_HANDLER == None: 21 filename = os.environ.get('CONDUIT_LOGFILE',os.path.join(conduit.USER_DIR,'conduit.log')) 22 ConduitLogger.LOG_FILE_HANDLER = logging.FileHandler(filename,'w') 23 ConduitLogger.LOG_FILE_HANDLER.setFormatter(formatter) 24 25 console = logging.StreamHandler() 26 console.setFormatter(formatter) 27 28 self.addHandler(ConduitLogger.LOG_FILE_HANDLER) 29 self.addHandler(console) 30 return
31 logging.setLoggerClass(ConduitLogger) 32