home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / lib / hplip / base / logger.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2007-04-29  |  7.9 KB  |  222 lines

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