python - module - mylog

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值