python logging模块简单使用

前记
1、日志作用:
    程序调试;
    了解软件程序运行情况;
    程序运行故障分析与问题定位;
2、详细日志等级:
    debug/info/notice/warning/error/critical/alert/emergency
3、日志记录可能包含的字段信息:
    事件发生时间
    事件发生位置
    事件日志级别
    事件内容

 一、日志等级:
     DEBUG    详细日志,问题诊断;
     INFO    记录关键节点信息;
     WARNING    记录不期望的事件;
     ERROR    记录严重问题导致功能运行不正常;
     CRITICAL严重错误,导致应用程序不能继续运行的信息;

 注:debug和info进行开发调试,线上使用warning或error级别;

 二、logging模块使用
     两种方式:
         1、使用logging提供的模块级别的函数;
         2、使用Logging日志系统的四大组件;

     常用函数:
         函数和说明
        logging.debug(msg, *args, **kwargs)    创建一条严重级别为DEBUG的日志记录
        logging.info(msg, *args, **kwargs)    创建一条严重级别为INFO的日志记录
        logging.warning(msg, *args, **kwargs)    创建一条严重级别为WARNING的日志记录
        logging.error(msg, *args, **kwargs)    创建一条严重级别为ERROR的日志记录
        logging.critical(msg, *args, **kwargs)    创建一条严重级别为CRITICAL的日志记录
        logging.log(level, *args, **kwargs)    创建一条严重级别为level的日志记录
        logging.basicConfig(**kwargs)    对root logger进行一次性配置
        其中logging.basicConfig(**kwargs)函数用于指定"要记录的日志级别"、"日志格式"、"日志输出位置"、"日志文件的打开模式"等,其他几个用于记录各个级别日志的函数;

    四大组件(后续):
        组件和说明
        loggers    提供应用程序代码直接使用的接口
        handlers    用于将日志记录发送到指定的目的位置
        filters    提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)
        formatters    用于控制日志信息的最终输出格式

三、logging提供的模块级别函数的使用
    logging函数的日志器的日志级别是warning,只有warning及大于它的error和critical日志被输出,小于它的debug和info被丢弃;
        import logging

        logging.debug("this is a debug log.");
        logging.info("this is a info log.")
        logging.warning("this is a warning log.")
        logging.error("this is a error log.")
        logging.critical("this is a critical log.")

        输出:
        WARNING:root:this is a warning log.
        ERROR:root:this is a error log.
        CRITICAL:root:this is a critical log.

    结果含义:日志级别:日志器名称:日志内容
    因为日志器设置的日志格式默认是BASIC_FORMAT,值为"%(levelname)s:%(name)s:%(message)s"


    logging.basicConfig()函数说明
        定义:logging.basicConfig(**kwargs)
        函数可接受的关键字:
        参数名称    描述
            filename    指定日志输出目标文件的文件名,指定该设置项后日志信心就不会被输出到控制台了
            filemode    指定日志文件的打开模式,默认为'a'。需要注意的是,该选项要在filename指定时才有效
            format    指定日志格式字符串,即指定日志输出时所包含的字段信息以及它们的顺序。logging模块定义的格式字段下面会列出。
            datefmt    指定日期/时间格式。需要注意的是,该选项要在format中包含时间字段%(asctime)s时才有效
            level    指定日志器的日志级别
            stream    指定日志输出目标stream,如sys.stdout、sys.stderr以及网络stream。需要说明的是,stream和filename不能同时提供,否则会引发 ValueError异常
            style    Python 3.2中新添加的配置项。指定format格式字符串的风格,可取值为'%'、'{'和'$',默认为'%'
            handlers    Python 3.3中新添加的配置项。该选项如果被指定,它应该是一个创建了多个Handler的可迭代对象,这些handler将会被添加到root logger。需要说明的是:filename、stream和handlers这三个配置项只能有一个存在,不能同时出现2个或3个,否则会引发ValueError异常。

  四、配置后的日志输出
        import logging

        logging.basicConfig(level=logging.DEBUG)
        logging.debug("this is a debug log.");
        logging.info("this is a info log.")
        logging.warning("this is a warning log.")
        logging.error("this is a error log.")
        logging.critical("this is a critical log.")
        
        输出:
        DEBUG:root:this is a debug log.
        INFO:root:this is a info log.
        WARNING:root:this is a warning log.
        ERROR:root:this is a error log.
        CRITICAL:root:this is a critical log.

        优化后:
        import logging

        LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
        logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT)

        logging.debug("This is a debug log.")
        logging.info("This is a info log.")
        logging.warning("This is a warning log.")
        logging.error("This is a error log.")
        logging.critical("This is a critical log.")
        输出:
        2018-08-23 22:36:44,163 - DEBUG - This is a debug log.
        2018-08-23 22:36:44,163 - INFO - This is a info log.
        2018-08-23 22:36:44,163 - WARNING - This is a warning log.
        2018-08-23 22:36:44,163 - ERROR - This is a error log.
        2018-08-23 22:36:44,163 - CRITICAL - This is a critical log.

        设置日期/时间格式:
        import logging

        LOG_FORMAT="%(asctime)s - %(levelname)s - %(message)s"
        DATE_FORMAT="%m/%d/%Y %H:%M:%S %p"

        logging.basicConfig(filename="my.log",level=logging.DEBUG,format=LOG_FORMAT,datefmt=DATE_FORMAT)

        logging.debug("This is a debug log.")
        logging.info("This is a info log.")
        logging.warning("This is a warning log.")
        logging.error("This is a error log.")
        logging.critical("This is a critical log.")
        输出:
        08/23/2018 22:40:59 PM - DEBUG - This is a debug log.
        08/23/2018 22:40:59 PM - INFO - This is a info log.
        08/23/2018 22:40:59 PM - WARNING - This is a warning log.
        08/23/2018 22:40:59 PM - ERROR - This is a error log.
        08/23/2018 22:40:59 PM - CRITICAL - This is a critical log.

logging.basicConfig()函数是一次性简单配置工具,多次调用不累加操作。后续学习四大组件;

 

注:如有错误,请指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值