天天看点

logging模块配置笔记

log文件的路径

#判断在当前的目录下是否有一个logs文件夹。没有则创建

log_dir = os.path.dirname(os.path.dirname(__file__))+'/logs'
if not os.path.exists(log_dir):

    os.mkdir(log_dir)
           

设定log文件名

#在上述的文件夹生成web.log文件
log_path = os.path.join(log_dir, 'web.log')
           

dictConfig通用参数配置

version版本号
'version': 1.0#固定值1.0
           
formatters日志格式设置
 'format': formatter的格式,字符串,比如'%(levelname)s-%(message)s'

 'datefmt': 日期的输出格式,字符串,比如'%Y-%m-%d %H:%M:%S'
           

然后看下面一个配置

'formatters': {

        'detail': {#detail自定义一个格式名字

            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',

            'datefmt': "%Y-%m-%d %H:%M:%S"

        },

        'simple': {#同detail自定义一个格式名字,这里定义另一种格式

            'format': '%(name)s - %(levelname)s - %(message)s',

        },

    }
           
handlers日志格式设置
    'handlers': {

        'console': {#console是自定义的handlers名字

            'class': 'logging.StreamHandler',#构造handler使用的类,字符串,必须使用全路径

            'level': 'INFO',#级别

            'formatter': 'detail'#上面的detail格式

        },

        'file': {#file是自定义的handlers名字

            'class': 'logging.handlers.RotatingFileHandler',

            'maxBytes': 1024 * 1024 * 5,#每个日志文件最大5M,超过之后重新命名一个文件

            'backupCount': 10,#最多备份10个日志文件,

            'filename': log_path,#上面定义的log文件名

            'level': 'INFO',

            'formatter': 'detail',

            'encoding': 'utf-8',

        },
           
loggers

必须指定一个级别和handlers列表

    'loggers': {

        'crawler': {#crawler是自定义的日志对象名字

            'handlers': ['console', 'file'],#输出方式

            'level': 'DEBUG',#级别

        },

        'parser': {

            'handlers': ['file'],#输出方式

            'level': 'INFO',#级别

        }

    }
           

以上日志配置综合

log_config = {

    'version': 1.0,

    'formatters': {

        'detail': {

            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',

            'datefmt': "%Y-%m-%d %H:%M:%S"

        },

        'simple': {

            'format': '%(name)s - %(levelname)s - %(message)s',

        },

    },

    'handlers': {

        'console': {

            'class': 'logging.StreamHandler',

            'level': 'INFO',

            'formatter': 'detail'

        },

        'file': {

            'class': 'logging.handlers.RotatingFileHandler',

            'maxBytes': 1024 * 1024 * 5,

            'backupCount': 10,

            'filename': log_path,

            'level': 'INFO',

            'formatter': 'detail',

            'encoding': 'utf-8',

        },

    },

    'loggers': {

        'crawler': {

            'handlers': ['console', 'file'],

            'level': 'DEBUG',

        },

        'parser': {

            'handlers': ['file'],

            'level': 'INFO',

        }

    }

}
           

创建日志对象使用

1.通过调用dictConfig(config)方法进行配置,config对象为一个dict

log_conf.dictConfig(log_config)
           

2.生成不同的日志对象

crawler = logging.getLogger('crawler')
parser = logging.getLogger('parser')
           

3.打印不同级别的log

常用的两种

crawler.error(错误信息)
crawler.info(字符串)
           

继续阅读