python logging文件

ConcurrentLogHandler 0.9.1

在项目部署的时候,往往代码都打包成pyc格式,无法打断点进行debug,所以log日志就显得非常重要,python自带的log功能是把文件写到一个文件里,然而这样也不利于找到指定位置的断点,最好的处理方式就是基于每个py文件生成指定log

import os
import logging
from cloghandler import ConcurrentRotatingFileHandler

class Log(object):
	# config可以试dict形式的配置文件或config文件
	config = {xxx} 
    def __init__(self, name=None, log_level='INFO', logger_path=None):
        if logger_path is None:
            self.logger_path = config.get('log').get('path')
        else:
            self.logger_path = logger_path

        if name:
            self.logger_file = '%s/%s' % (self.logger_path, name)
            
        self.logger = logging.getLogger(name)
        self.log_level = log_level
        self.handler_log()

    def handler_log(self):
        
        self.logger.handlers = []
        if not os.path.exists(self.logger_path):
            os.system('mkdir -p %s' % self.logger_path)
        
        # 3个参数分别是指定的文件名,a表示追加,1M,最多存在5个文件
        rotate_handler = ConcurrentRotatingFileHandler(self.logger_file, "a", 1 * 1024 * 1024, 3)
        self.logger.addHandler(rotate_handler)
        
        # 设置格式
        if self.log_level == 'DEBUG':
            self.logger.setLevel(logging.DEBUG)
            log_formatter = '%(threadName)s %(thread)s %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s %(funcName)s %(lineno)d [-] %(message)s'

    def get_logger(self):
        return self.logger


class UserObj(ORMBaseObject):
    """user object
    """
    db_model = User
    
    # 此时name传递的是从根目录的绝对路径的文件名
    logger = Log(__name__).get_logger()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值