一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

简单封装python的logging的例子

时间:2015-10-03 编辑:简简单单 来源:一聚教程网

用python的logging的时候,每次都要写很多话才能记一条log,于是做了个小模块来让记log变得更便捷。
代码如下

log.py


import logging, logging.handlers
import config
import inspect

FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
LOG_LEVEL = logging.DEBUG
logger = {}
handler = logging.handlers.RotatingFileHandler(
            config.PATH_LOG_FILE,
            maxBytes = 1048576 * 2, # 2MB
            backupCount = 5,
        )
handler.setFormatter(logging.Formatter(FORMAT))

__all__ = ['Log', 'LogI', 'LogE', 'LogD', 'LogC', 'LogW']
def Log(name):
    if inspect.isclass(type(name)): #instance
        name = name.__class__.__name__
    elif inspect.isclass(type(name)): #class
        name = name.__name__
    else:
        name = name or "no_name"
    if name in logger:
        return logger[name]
    else:
        l = logging.getLogger(name)
        l.setLevel(LOG_LEVEL)
        l.addHandler(handler)
        logger[name] = l
        return l

def LogI(name, log):
    return Log(name).info(log)

def LogE(name, log):
    return Log(name).error(log)

def LogD(name, log):
    return Log(name).debug(log)

def LogC(name, log):
    return Log(name).critical(log)

def LogW(name, log):
    return Log(name).warning(log)


试试看:


from log import *

class C(object):
    def logC(self, log):
        LogC(self, log)

instance = C()
LogI(C(), 'passing instance')
LogW(C,'passing class type')
instance.logC("passing self")

来看看我们的log输出:

2014-12-06 15:10:56,817 - C - INFO - passing instance
2014-12-06 15:10:56,818 - type - WARNING - passing class type
2014-12-06 15:10:56,818 - C - CRITICAL - passing self

热门栏目