zoukankan      html  css  js  c++  java
  • Python学习_日志模块:logging

      一、logging模块

    作用:在逻辑容易出错位置手动添加日志功能,记录报错信息到文件,以被排错
    特点:非自动记录,为人工指定位置,指定报错信息内容
    提供五种模式:debug < info < warning < error < critical
    默认从warning开始输出,可以根据需求
    调整默认写入文件是追加a模式

    二、logging模块的两种操作模式
    • 第一种方式是使用logging提供的模块级别的函数(low版,不可个性化)

    • 第二种方式是使用Logging日志系统的四大组件,对象的模式操作(高大上版,高耦合性,个性无极限) 

     1 # 第一种、普通日志记录,不能同时打印及写入日志
     2 impot logging
     3 logging.basicConfig(level=logging.DEBUG,
     4                     format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
     5                     filename='log2018.log')  # 配置了文件名就写入文件
     6 logging.debug('message')
     7 logging.info('message')
     8 logging.warning('message')
     9 logging.error('message')
    10 logging.critical('message')
    11 logging.log(logging.ERROR, 'this is a error test')
    12 # 自定义级别及信息:logging.log(level,mes)
     1 # 第二种、自定义配置日志
     2 # 同时打印到控制台及写入文件(分别创建fileHandler和streamHandler)
     3 # 自定义将日志内容按日志级别分割成多个文件写入(创建多个文件handler)
     4 # 自定义同时写入文件格式,内容,打印格式的格式和内容 (为各个handler创建不同的formatter格式化)
     5 # 自定义每个文件、打印到屏幕的日志级别(为各个handler设置不同的logging.setLevel(***))
     6 流程如下:
     7 1、创建logger对象     logging.getLogger()
     8 2、指定logger日志级别 logging.setLevel()
     9 3、创建handler        logging.FileHandler()
    10 4、指定handler的日志级别(必须高于logger级别)  handler.setLevel()
    11 5、创建handler的日志格式    custom_format = logging.Formatter()
    12 6、指定handler的日志格式    handler.setFormatter(custom_format)
    13 7、日志器logger调用handler处理器    obj.addHandler(handler)
    14 8、配置各个日志级别的日志记录message  longging.debug(msg)
    15 
    16 '''
    17 import logging
    18 # 1、通过日志器logger实例化对象,调用方法getLogger()
    19 log_obj = logging.getLogger(__name__)
    20 
    21 # 2、设置日志器logger即全局日志级别(可省略,默认从warning开始,如要设置必须高于其级别即INFO开始)
    22 log_obj.setLevel(logging.INFO)
    23 
    24 # 3、创建各个需求的Handler句柄(本例设置三个,一个写入error错误信息的文件,一个写入全部日志的文件,一个打印到控制台)
    25 error_fh = logging.FileHandler('err.log', 'a', encoding='UTF-8')  # 默认追加,encoding按当前默认编码
    26 all_fh = logging.FileHandler('all.log')
    27 stream_sh = logging.StreamHandler()      # 打印出来没有指定目的地一说
    28 
    29 # 4、为每个handler句柄配置日志记录级别(如果不设置默认继承日志器logger的日志级别)
    30 error_fh.setLevel(logging.ERROR)
    31 all_fh.setLevel(logging.WARNING)
    32 stream_sh.setLevel(logging.WARNING)
    33 
    34 # 5、为每个handler句柄配置日志格式(可以配置一个,其他都用一个,也可以各个配置)
    35 err_format = logging.Formatter('%(asctime)s-%(filename)s-[line:%(lineno)d]-%(levelname)s-%(message)s')
    36 stream_format = logging.Formatter('%(asctime)s-[line:%(lineno)d]-%(levelname)s-%(message)s')
    37 
    38 # 6、为每个handler句柄配置日志格式
    39 error_fh.setFormatter(err_format)
    40 all_fh.setFormatter(err_format)
    41 stream_sh.setFormatter(stream_format)
    42 
    43 # 7、日志器logger调用处理器handler,相结合
    44 log_obj.addHandler(error_fh)
    45 log_obj.addHandler(all_fh)
    46 log_obj.addHandler(stream_sh)
    47 
    48 # 8、为各个日志级别设置日志信息
    49 logging.debug('debug:message2018')
    50 logging.info('info:message2019')
    51 logging.warning('waring:message2020')
    52 logging.error('error:message2088')
    53 logging.critical('critical:message2099')

     想了解详细见:https://www.cnblogs.com/sunxiuwen/articles/9285938.html

  • 相关阅读:
    数字雨-贪吃蛇
    C语言入门9-2-模块大致一览
    C语言入门9-1-分类函数
    C语言入门8-数组-基本算法
    C语言入门7-程序设计方法基础-循环结构
    C语言入门6-选择结构--f语句-switch
    C语言入门5-键盘的输入和屏幕输出
    C语言入门4-运算符和表达式
    C语言入门3-C语言概述及数据类型
    Systemd 入门教程:命令篇
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/9288072.html
Copyright © 2011-2022 走看看