day19

it2022-05-09  32

今日所学:

logging模块

操作日志的模块 日志:日常的流水,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中在正常的项目中,项目运行的一些打印信息,采用looging打印到文件中,这个过程就称之为 记录日志

可在logging.basicConfig()函数中通过具体参数来更改logging模块默认行为,可用参数有filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。format:指定handler使用的日志显示格式。 datefmt:指定日期时间格式。 level:设置rootlogger(后边会讲解具体概念)的日志级别

 

日志就是记录日常流水,即日志文件程序运行过程当中的数据,优化程序,跟好的服务用户导入模块 import logging 输出日志 logging.info('info') # 常规信息 20 logging.debug("debug") # 调试信息 10logging.warning("warning") # 警告信息 30logging.error("error") # 错误信息 40 logging.critical("critical") # 严重错误 50 fatal一样 用数字来表示级别,数字越大级别越高 默认级别为warning,对应数字为30 五种打印级别信息,级别本身没有代表信息重要性,只表示它打印的给它附属的,没有实际意义 1,日志被打印到控制台 2,日志输出的格式为级别 3,日志生成器名称,日志消息 日志的配置: loggin 四大成员 logging .basicConfig() 函数中通过具体参数来更改logging模块默认行为,可用参数有1 新建打印者 logger=logging.getLogger('owen') 生成器 loggin.getLogger('日志对象1') #logger:产生日志的对象2, 创建句柄:输出的位置 logger.critical('msg')ster_hand = logging.StreamHandler() 控制台句柄 用一个名字接受控制台句柄Handler:接收日志然后控制打印到不同的地方,FileHandler用来打印到文件中,StreamHandler用来打印到终端a_file_hand = logging.FileHandler('a.log') 文件句柄 如果有中文 handler1 = logging.FileHandler("文件名1",encoding="utf-8") b_file_hand = logging.FileHandler('b.log') 文件句柄 如果有中文 handler1 = logging.FileHandler("文件名2",encoding="utf-8") 3.打印者绑定句柄logger.addHandler(ster_hand ) 绑定生成器logger.addHandler(a_file_hand) 绑定文件句柄logger.addHandler(b_file_hand) 绑定文件句柄设置格式fmt1 = logging.Formatter('%(asctime)s-%(msg)s') Formatter对象:可以定制不同的日志格式对象,然后绑定给不同的Handler对象使用,以此来控制不同的Handler的日志格式fmt2 = logging.Formatter('%(asctime)s [%(name)s]-%(msg)s') 为句柄绑定输出格式ster_hand.setFormatter(fmt1) 绑定格式化对象a_file_hand.setFormatter(fmt1) 绑定格文件句柄b_file_hand.setFormatter(fmt2) 绑定文件句柄 logger.critical('msg') 测试 及输出日志logging.info('info') 常规信息 20 logging.debug("debug") 调试信息 10 logging.warning("warning") 警告信息 30 logging.error("error") 错误信息 40 logging.critical("critical") 1.配置LOGGING_DIC = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'o_fmt1': { 'format': '%(name)s:%(asctime)s - %(message)s' }, 'o_fmt2': { 'format': '%(name)s:%(asctime)s [%(levelname)s] - %(message)s' } }, 'filters': {}, 'handlers': { 'o_cmd': { 'level': 'DEBUG', 控制台级别 'class': 'logging.StreamHandler', 控制台句柄 'formatter': 'o_fmt1' 控制台格式 }, 'o_file': { 'level': 'WARNING', 文件中级别 'class': 'logging.handlers.RotatingFileHandler', 文件最多存的字节数 'formatter': 'o_fmt2', 文件格式 'filename': r'F:\python8期\课堂内容\day20\代码\part4\logging.log', 日志文件 路径 'maxBytes': 1024*1024*5, 日志大小 5M 'backupCount': 5, 日志文件最大个数 'encoding': 'utf-8', 日志文件的编码 } }, 'loggers': { 'o_owen': { 'level': 'DEBUG', 级别 'handlers': ['o_cmd', 'o_file'] }, 'o_zero': { 'level': 'DEBUG', 'handlers': ['o_file'] } }}2.加载配置import logging.configlogging.config.dictConfig(LOGGING_DIC) 3.使用log = logging.getLogger('o_owen')log.warning('123')

转载于:https://www.cnblogs.com/Fzhiyuan/p/10841626.html


最新回复(0)