Implementing a Python Logger
Revision as of 11:37, 20 February 2013 by PeterHarding (talk | contribs) (moved Python Logger to Implementing a Python Logger)
An Example
This example class builds on the underlying Python logging support.
Module
$ cat Logger.py import os import sys import logging #========================================================================== class Logger: logger = None debug = False @classmethod def Info(cls, msg): global debug_level, verbose_flg if not cls.logger: cls.Init() cls.logger.info(' ' + msg) if cls.debug: sys.stderr.write("[%s::INFO] %s\n" % (cls.name, msg)) #---------------------------------------------------------------------- @classmethod def Error(cls, msg): global debug_level, verbose_flg if not cls.logger: cls.Init() cls.logger.error(msg) if cls.debug: sys.stderr.write("[%s::ERROR] %s\n" % (cls.name, msg)) #---------------------------------------------------------------------- @classmethod def Warning(cls, msg): global debug_level, verbose_flg if not cls.logger: cls.Init() cls.logger.warning('*****' + msg + '*****') if cls.debug: sys.stderr.write("[%s::WARNING] %s\n" % (cls.name, msg)) #---------------------------------------------------------------------- @classmethod def Init(cls, name='logger', log_dir='/c/temp', debug=False): cls.debug = debug cls.name = name cls.pid = os.getpid() if cls.debug: sys.stderr.write("[%s::Init] PID is %d\n" % (cls.name, cls.pid)) cls.log_file = '%s/%s.log' % (log_dir, name) try: cls.logger = logging.getLogger(name) cls.hdlr = logging.FileHandler(cls.log_file) cls.fmtr = logging.Formatter('%(asctime)s %(levelname)s %(message)s') cls.hdlr.setFormatter(cls.fmtr) cls.logger.addHandler(cls.hdlr) cls.logger.setLevel(logging.INFO) cls.logger.info("===== Started processing %s" % ('=' * 20)) cls.count = 0 except IOError, msg: sys.stderr.write(cls.log_file + ': cannot open: ' + `msg` + '\n') sys.exit(1) #==========================================================================
Test harness
$ cat tst_logger.py #!/usr/bin/env python import flask import performiq from performiq import Logger debug_level = 0 verbose_flg = True print "performiq version [%s]" % performiq.VERSION Logger.Init(debug=True) Logger.Info("Testing - Info...") Logger.Warning("Testing - Warning...") Logger.Error("Testing - Error...")