当前位置: 首页 > 工具软件 > mylog > 使用案例 >

python - module - mylog

卫博学
2023-12-01

python module -- mylog

'''
logger:
save log to file and print to console

from mylog import mylog
from mylog import debug
from mylog import info
from mylog import error
from mylog import initlog
from mylog import destory
logger = initlog(tag, fname)
setlogger(logger) #for mythread debug
destory()
'''
import logging
import sys
import time

logger = None

def wtime(format = '%m-%d %H:%M:%S'):
    return time.strftime(format, time.localtime(time.time()))

class mylog:
    DEBUG = logging.DEBUG
    INFO = logging.INFO
    def __init__(self, name):
        self.fmt = '%(asctime)s %(levelname)s %(name)-4s: %(message)s'
        self.formatter = logging.Formatter(self.fmt)
        self.logger = logging.getLogger(name)
        self.logger.setLevel(logging.DEBUG)
        self.handlers = []

    def setfmt(self, fmt):
        self.formatter = logging.Formatter(fmt)
    
    def setname(self, name):
        self.logger = logging.getLogger(name)
        self.name = name
        
    def createfile(self, fname):
        if fname is None:
            return None
        file_handler = logging.FileHandler(fname + wtime(format = '%m-%d-%H-%M-%S') + ".log")
        file_handler.setFormatter(self.formatter)
        file_handler.setLevel(logging.DEBUG)
        self.logger.addHandler(file_handler)        
        self.handlers.append(file_handler)
        return file_handler

    def createconsole(self):
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.formatter = self.formatter
        console_handler.setLevel(logging.INFO)
        self.logger.addHandler(console_handler)        
        self.handlers.append(console_handler)
        return console_handler
    
    def destory(self):
        for handler in self.handlers:
            try:
                self.logger.removeHandler(handler)
            except:
                print 'removeHandler failed :'
                print sys.exc_info()
        self.logger = None
    
    def getlogger(self):
        return self.logger
        
    def debug(self, msg):
        if self.logger : self.logger.debug(msg)
        else : print msg
    def info(self, msg):
        if self.logger : self.logger.info(msg)
        else : print msg
    def error(self, msg):
        if self.logger : self.logger.error(msg)
        else : print msg
        
def initlog(tag, fname):
    global logger
    logger = mylog(tag)
    logger.createfile(fname).setLevel(logger.DEBUG)
    logger.createconsole().setLevel(logger.INFO)
    return logger
    
def debug(msg):
    global logger
    if logger is None:
        initlog('mylog', 'mylog_')
    logger.debug(msg)

def info(msg):
    global logger
    if logger is None:
        initlog('mylog', 'mylog_')
    logger.info(msg)

def error(msg):
    global logger
    if logger is None:
        initlog('mylog', 'mylog_')
    logger.error(msg)

def destory():
    global logger
    if logger is None: return
    logger.destory()
    logger = None


 类似资料: