python logging 的一个简单的包装

import logging, os
import logging.handlers
import datetime

loggers = []

def getlogroot(name) :
    logroot = os.path.basename(name)
    if logroot.endswith('.py') :
        logroot = logroot[:-3]
    elif logroot.endswith('.pyc') :
        logroot = logroot[:-4]

    return logroot

def init_logging_system(log_dir = '/data/logs', root = __file__):
    logroot = getlogroot(root)
    if logroot in loggers : return
    loggers.append(logroot)

    logger = logging.getLogger(logroot)
    #hdlr = logging.FileHandler(os.path.join(log_dir, '%s-%s.log' % (logroot, datetime.datetime.today().strftime('%F')))) 
    logfile = os.path.join(log_dir, logroot + '.log')
    hdlr = logging.handlers.RotatingFileHandler(logfile, maxBytes = 10240000, backupCount = 5)
 
    formatter = logging.Formatter('%(asctime)19s %(levelname)-8s %(name)s %(threadName)s %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)
    logger.setLevel(logging.DEBUG)

def get(root = __file__) :
    logroot = getlogroot(root)
    if logroot not in loggers : logroot = __file__
    return logging.getLogger(logroot)

if __name__ == '__main__' :
    init_logging_system()
    l = get()
    l.warn('testing')
    l.debug('this is a debug message')

 

蓝色部分表示每天一个文件。适合于定时任务。

绿色部分表示文件到了10M就自动滚动,适合于后台的服务

 

日志的文件名,是__file__去掉扩展名之后的文件名。当然如果传过来的root参数不是以.py或.pyc结尾,则使用传过来的值作为文件名。

调用时

import logger

logger.init_logging_system(root = __file__)

log = logger.get(__file__)

 

log.debug(......)

log.error(......)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值