日志模块--logging

日志模块:logging

一、怎么形容日志模块呢?

1、日志模块就像一个办公室,办公室不同的人员负责不同的工作

2、一个人负责:负责往控制台里面输出日志信息的

3、往日志文件里面写日志的,按天生成日志,清理日志

import logging
from logging import  handlers

#怎样将日志写入文件跟在控制台输出
#1、办公室
#2、负责往控制台里面输出日志信息
#3、往文件里面写日志的,按天生成日志,清理日志


logger=logging.getLogger()#先实例化一个logger对象,先创建一个办公室
logger.setLevel(logging.DEBUG)#设置日志的级别
#f1=logging.FileHandler(filename='a.log',mode='a',encoding='utf-8')#找到些日志的这个人,这个比较低级,舍弃
c1=logging.StreamHandler()#负责往控制台输出的
b1=handlers.TimedRotatingFileHandler(filename='a.log',when='s',interval=1,backupCount=3,encoding='utf-8')
# when是间隔的时间单位,单位有以下几种:
#             # S 秒
#             # M 分
#             # H 小时、
#             # D 天、
#             # W 每星期(interval==0时代表星期一)
#             # midnight 每天凌晨

#下面指定日志的格式
fmt=logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
c1.setFormatter(fmt)#设置控制台输出的日志格式
b1.setFormatter(fmt)#设置文件里面写入的日志格式
logger.addHandler(c1)#把已经调教好的人放到办公室
logger.addHandler(b1)#把已经调教好的人放到办公室
#指定日志的格式
logger.debug('我是debug。。。')
logger.warning('我是waring...')
logger.info('我是info...')
logger.error('我是error...')

 #结果:

 

二、封装日志类模块

将日志封装成一个类,变成一个模块,需要的时候直接导入该模块调用日志类方法:

import logging
from logging import handlers
class MyLogger():
    def __init__(self,file_name,level='info',backCount=5,when='D'):
        logger = logging.getLogger()  # 先实例化一个logger对象,先创建一个办公室
        logger.setLevel(self.get_level(level))  # 设置日志的级别的人
        cl = logging.StreamHandler()  # 负责往控制台输出的人
        bl = handlers.TimedRotatingFileHandler(filename=file_name, when=when, interval=1, backupCount=backCount, encoding='utf-8')
        fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')#日志格式
        cl.setFormatter(fmt)  # 设置控制台输出的日志格式
        bl.setFormatter(fmt)  # 设置文件里面写入的日志格式
        logger.addHandler(cl)
        logger.addHandler(bl)
        self.logger = logger

    def get_level(self,str):
        level = {
            'debug':logging.DEBUG,
            'info':logging.INFO,
            'warning':logging.WARNING,
            'error':logging.ERROR
        }
        str = str.lower()
        return level.get(str)

lw_log = MyLogger('lw.log','debug')
lw_log.logger.warning('哈哈哈')
#

 

posted @ 2018-06-01 15:43  懒虫小园  阅读(155)  评论(0编辑  收藏  举报