home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / hplip / base / logger.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  5.9 KB  |  192 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import sys
  5. import thread
  6. import syslog
  7. import traceback
  8. import string
  9. identity = string.maketrans('', '')
  10. unprintable = identity.translate(identity, string.printable)
  11.  
  12. def printable(s):
  13.     return s.translate(identity, unprintable)
  14.  
  15. DEFAULT_LOG_LEVEL = 'info'
  16.  
  17. class Logger(object):
  18.     LOG_LEVEL_NONE = 99
  19.     LOG_LEVEL_FATAL = 6
  20.     LOG_LEVEL_ERROR = 5
  21.     LOG_LEVEL_WARN = 4
  22.     LOG_LEVEL_INFO = 3
  23.     LOG_LEVEL_DEBUG = 2
  24.     LOG_LEVEL_DBG = 2
  25.     logging_levels = {
  26.         'none': LOG_LEVEL_NONE,
  27.         'fata': LOG_LEVEL_FATAL,
  28.         'fatal': LOG_LEVEL_FATAL,
  29.         'erro': LOG_LEVEL_ERROR,
  30.         'error': LOG_LEVEL_ERROR,
  31.         'warn': LOG_LEVEL_WARN,
  32.         'info': LOG_LEVEL_INFO,
  33.         'debu': LOG_LEVEL_DEBUG,
  34.         'debug': LOG_LEVEL_DEBUG }
  35.     LOG_TO_DEV_NULL = 0
  36.     LOG_TO_CONSOLE = 1
  37.     LOG_TO_SCREEN = 1
  38.     LOG_TO_FILE = 2
  39.     LOG_TO_CONSOLE_AND_FILE = 3
  40.     LOG_TO_BOTH = 3
  41.     
  42.     def __init__(self, module = '', level = LOG_LEVEL_INFO, where = LOG_TO_CONSOLE_AND_FILE, log_datetime = False, log_file = None):
  43.         self.set_level(level)
  44.         self._where = where
  45.         self._log_file = log_file
  46.         self._log_datetime = log_datetime
  47.         self._lock = thread.allocate_lock()
  48.         self.module = module
  49.  
  50.     
  51.     def set_level(self, level):
  52.         if isinstance(level, str):
  53.             level = level[:4].lower()
  54.             if level in Logger.logging_levels.keys():
  55.                 self._level = Logger.logging_levels.get(level, Logger.LOG_LEVEL_INFO)
  56.                 return True
  57.             else:
  58.                 self.error('Invalid logging level: %s' % level)
  59.                 return False
  60.         elif isinstance(level, int):
  61.             if level <= level:
  62.                 pass
  63.             elif level <= Logger.LOG_LEVEL_FATAL:
  64.                 self._level = level
  65.             else:
  66.                 self.error('Invalid logging level: %d' % level)
  67.                 return False
  68.         else:
  69.             return False
  70.  
  71.     
  72.     def set_module(self, module):
  73.         self.module = module
  74.  
  75.     
  76.     def set_logfile(self, log_file):
  77.         self._log_file = log_file
  78.         
  79.         try:
  80.             self._log_file_f = file(self._log_file, 'w')
  81.         except IOError:
  82.             self._log_file = None
  83.  
  84.  
  85.     
  86.     def set_where(self, where):
  87.         self._where = where
  88.  
  89.     
  90.     def get_level(self):
  91.         return self._level
  92.  
  93.     
  94.     def is_debug(self):
  95.         return self._level == Logger.LOG_LEVEL_DEBUG
  96.  
  97.     level = property(get_level, set_level)
  98.     
  99.     def log(self, message, level):
  100.         if self._where in (Logger.LOG_TO_CONSOLE, Logger.LOG_TO_CONSOLE_AND_FILE):
  101.             
  102.             try:
  103.                 self._lock.acquire()
  104.                 if level >= Logger.LOG_LEVEL_WARN:
  105.                     out = sys.stderr
  106.                 else:
  107.                     out = sys.stdout
  108.                 out.write(message)
  109.                 out.write('\n')
  110.             finally:
  111.                 self._lock.release()
  112.  
  113.         
  114.         if self._log_file is not None and self._where in (Logger.LOG_TO_FILE, Logger.LOG_TO_CONSOLE_AND_FILE):
  115.             
  116.             try:
  117.                 self._lock.acquire()
  118.                 self._log_file_f.write(message.replace('\x1b', ''))
  119.                 self._log_file_f.write('\n')
  120.             finally:
  121.                 self._lock.release()
  122.  
  123.         
  124.  
  125.     
  126.     def stderr(self, message):
  127.         
  128.         try:
  129.             self._lock.acquire()
  130.             sys.stderr.write(message)
  131.             sys.stderr.write('\n')
  132.         finally:
  133.             self._lock.release()
  134.  
  135.  
  136.     
  137.     def debug(self, message):
  138.         if self._level <= Logger.LOG_LEVEL_DEBUG:
  139.             self.log('%s%s [DEBUG]: %s%s' % ('\x1b[34;01m', self.module, message, '\x1b[0m'), Logger.LOG_LEVEL_DEBUG)
  140.             syslog.syslog(syslog.LOG_DEBUG, '%s [DEBUG] %s' % (self.module, message))
  141.         
  142.  
  143.     dbg = debug
  144.     
  145.     def debug_block(self, title, block):
  146.         if self._level <= Logger.LOG_LEVEL_DEBUG:
  147.             self.log('%s%s [DEBUG]: %s:%s' % ('\x1b[34;01m', self.module, title, '\x1b[0m'), Logger.LOG_LEVEL_DEBUG)
  148.             self.log('%s%s%s' % ('\x1b[34;01m', block, '\x1b[0m'), Logger.LOG_LEVEL_DEBUG)
  149.         
  150.  
  151.     
  152.     def info(self, message):
  153.         if self._level <= Logger.LOG_LEVEL_INFO:
  154.             if self.module:
  155.                 self.log('%s %s' % (self.module, message), Logger.LOG_LEVEL_INFO)
  156.             else:
  157.                 self.log(message, Logger.LOG_LEVEL_INFO)
  158.         
  159.  
  160.     information = info
  161.     
  162.     def warn(self, message):
  163.         if self._level <= Logger.LOG_LEVEL_WARN:
  164.             self.log('%s%s [WARNING]: %s%s' % ('\x1b[31;01m', self.module, message, '\x1b[0m'), Logger.LOG_LEVEL_WARN)
  165.             syslog.syslog(syslog.LOG_WARNING, '%s [WARN] %s' % (self.module, message))
  166.         
  167.  
  168.     warning = warn
  169.     
  170.     def error(self, message):
  171.         if self._level <= Logger.LOG_LEVEL_ERROR:
  172.             self.log('%s%s [ERROR]: %s%s' % ('\x1b[31;01m', self.module, message, '\x1b[0m'), Logger.LOG_LEVEL_ERROR)
  173.             syslog.syslog(syslog.LOG_ALERT, '%s [ERROR] %s' % (self.module, message))
  174.         
  175.  
  176.     
  177.     def fatal(self, message):
  178.         if self._level <= Logger.LOG_LEVEL_FATAL:
  179.             self.log('%s%s [FATAL]: %s%s' % ('\x1b[31;01m', self.module, message, '\x1b[0m'), Logger.LOG_LEVEL_DEBUG)
  180.             syslog.syslog(syslog.LOG_CRIT, '%s [FATAL] %s' % (self.module, message))
  181.         
  182.  
  183.     
  184.     def exception(self):
  185.         (typ, value, tb) = sys.exc_info()
  186.         body = 'Traceback (innermost last):\n'
  187.         lst = traceback.format_tb(tb) + traceback.format_exception_only(typ, value)
  188.         body = body + '%-20s %s' % (''.join(lst[:-1]), lst[-1])
  189.         self.fatal(body)
  190.  
  191.  
  192.