# 时间 哪个文件里面的 第几行代码 具体
import logging
from logging import handlers
# debug debug级别,最低级别,一般开发人员用来打印一些调试信息
# info info级别,正常输出信息,一般用来打印一些正常的操作
# waring级别,一般用来打印警信息
# error级别,一般用来打印一些错误信息
# critical级别,一般用来打印一些致命的错误信息
# logging.basicConfig(level=logging.DEBUG,
# format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
# filename='a.log',
# filemode='a',
# )
# logging.debug('我是debug')
# logging.info('我是info')
# logging.warning('我是warning')
# logging.error('我是error')
# logging.critical('我是critical')
#debug < info < warning < error < critical
Logger = logging.getLogger() #创建一个办公室
Logger.setLevel(logging.DEBUG) #设置日志级别
#一个往屏幕上输出 StreamHandler
#一个往文件里面写东西 TimedRotatingFileHandler
fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
#定义格式
st = logging.StreamHandler() #实例化StreamHandler,相当于找一个人给你干活 往屏幕上输出
st.setFormatter(fmt) #设置屏幕上显示的格式
th = handlers.TimedRotatingFileHandler(
'my.log',when='d',encoding='utf-8',backupCount=5
#第一个参数是文件名,第二个 when是隔多久生成一个日志,backupCount就是保存几个日志文件
) #实例化TimedRotatingFileHandler 相当于找一个人给你干活 往文件里面写东西
th.setFormatter(fmt)#设置文件里面写入的格式
Logger.addHandler(st) #把这两个对象加入到logger里面,也就是把干活的人塞到办公室里面
Logger.addHandler(th)
Logger.debug('my_log debug 信息')
Logger.info('my_log info 信息')
Logger.warning('my_log warning 信息')
Logger.error('my_log error 信息')
MyLog (封装:打印日志通用类)
import logging
from logging import handlers
class Logger(object):
level_relations = {
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'crit': logging.CRITICAL
} # 日志级别关系映射
def __init__(self,filename,level='info',
when='D',
back_count=3,
fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
self.logger = logging.getLogger(filename)
# 分割日志的单位 S 秒、M 分、 H 小时、 D 天、 W 每星期(interval==0时代表星期一)、midnight 每天凌晨
format_str = logging.Formatter(fmt) #设置日志格式
self.logger.setLevel(self.level_relations.get(level)) #设置日志级别
sh = logging.StreamHandler()
sh.setFormatter(format_str)
th = handlers.TimedRotatingFileHandler(filename=filename,when=when,
backupCount=back_count,encoding='utf-8')
th.setFormatter(format_str)
self.logger.addHandler(sh)
self.logger.addHandler(th)
if __name__ == '__main__':
log = Logger('nhy.log')
log.logger.debug('i的是100')
log.logger.info('开机')
log.logger.warning('警告 飞机没油了')
log.logger.error('错误 飞机要爆炸')
run (test.py)
from MyLog import Logger
log = Logger('nhy.log')
log.logger.debug('i的是100')
log.logger.info('开机')
log.logger.warning('警告 飞机没油了')
log.logger.error('错误 飞机要爆炸')