zoukankan      html  css  js  c++  java
  • 第44天python学习logging

    参考学习网址:https://www.cnblogs.com/yyds/p/6901864.html

    logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。logging模块是Python的一个标准库模块,
    由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日志记录功能。所以,你的应用日志可以将你自己
    的日志信息与来自第三方模块的信息整合起来。

    import logging
    日志级别
    logging.debug("This is a debug log.")#最详细的日志信息,典型应用场景是 问题诊断
    logging.info("This is a info log.")#信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
    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.

    为什么只是输出3条结果:
    这是因为logging模块提供的日志记录函数所使用的日志器设置的日志级别是WARNING,因此只有WARNING级别的日志记录以及大于它的ERROR和CRITICAL
    级别的日志记录被输出了,而小于它的DEBUG和INFO级别的日志记录被丢弃了。

    修改打印日志级别————————以下代码的弊端打印结果只能显示到指定文件夹
    import logging

    logging.basicConfig(
    level=logging.DEBUG, ##修改等级为debug等级,打印出所有的,因为debug最低的
    filename="logger.log", #把打印内容存在在文件logger.log里面。没运行一次就会追加一次,
    filemode="w" , #打印内容,不会打印重复的
    format="%(asctime)s- [%(lineno)d]--%(filename)s-%(levelname)s - %(message)s"
    #asctime:输出字符串显示时间格式,levelname:日志级别名称,message:日志内容,(lineno):源代码在的行号 filename:源代码文件名
    )

    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.")


    修改打印日志级别————————以下代码的弊端打印结果只能显示到屏幕
    import logging

    logging.basicConfig(
    level=logging.DEBUG, ##修改等级为debug等级,打印出所有的,因为debug最低的
    format="%(asctime)s- [%(lineno)d]--%(filename)s-%(levelname)s - %(message)s"
    #asctime:输出字符串显示时间格式,levelname:日志级别名称,message:日志内容,(lineno):源代码在的行号 filename:源代码文件名
    )

    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.")


    修改打印日志级别————————以下代码的能同时打印到屏幕和文件夹
    logger:就好比吸星大法,可以吸别人有的技能
    import logging
    logger=logging.getLogger()#获得logger这个对象,就好比先有个会吸星大法的人

    pm=logging.StreamHandler()#pm的技能是可以把日志打印到屏幕,

    wj=logging.FileHandler("wenjiaming_log")#wj的技能是可以把日志打印到文件里面,参数是要打印到对应的文件名称

    fm=logging.Formatter("%(asctime)s- [%(lineno)d]--%(filename)s-%(levelname)s - %(message)s")
    #打印格式

    pm.setFormatter(fm)#屏幕输出应用fm的格式

    wj.setFormatter(fm)#文件输出应用fm的格式

    logger.addHandler(pm)#使用吸星大法吸到一个技能(在屏幕上打印)

    logger.addHandler(wj)#使用吸星大法吸到一个技能(在文件里面打印)

    logger.setLevel("DEBUG")#修改输出的等级,默认输出等级是WARNING,可以修改为DEBUG,需要大写

    logger.debug("This is a debug log.")
    logger.info("This is a info log.")
    logger.warning("This is a warning log.")
    logger.error("This is a error log.")
    logger.critical("This is a critical log.")


    ——————————————定义两个logger使用场景——————
    用户名会被覆盖,所以输出的结果总共是8条
    logger:就好比吸星大法,可以吸别人有的技能
    import logging
    logger1=logging.getLogger("mylogger")#获得logger这个对象,就好比先有个会吸星大法的人,参数:表示root下面的其他用户
    logger2=logging.getLogger("mylogger")#获得logger这个对象,就好比先有个会吸星大法的人

    pm=logging.StreamHandler()#pm的技能是可以把日志打印到屏幕,

    wj=logging.FileHandler("wenjiaming_log")#wj的技能是可以把日志打印到文件里面,参数是要打印到对应的文件名称

    fm=logging.Formatter("%(asctime)s- [%(lineno)d]--%(filename)s-%(levelname)s - %(message)s")
    #打印格式

    pm.setFormatter(fm)#屏幕输出应用fm的格式

    wj.setFormatter(fm)#文件输出应用fm的格式

    logger1.addHandler(pm)#使用吸星大法吸到一个技能(在屏幕上打印)

    logger1.addHandler(wj)#使用吸星大法吸到一个技能(在文件里面打印)

    logger1.setLevel("DEBUG")#修改输出的等级,默认输出等级是WARNING,可以修改为DEBUG,需要大写

    logger2.setLevel("INFO")#修改输出的等级,默认输出等级是WARNING,可以修改为DEBUG,需要大写

    logger1.debug("This is a debug log.")
    logger1.info("This is a info log.")
    logger1.warning("This is a warning log.")
    logger1.error("This is a error log.")
    logger1.critical("This is a critical log.")


    logger2.debug("This is a debug log.")
    logger2.info("This is a info log.")
    logger2.warning("This is a warning log.")
    logger2.error("This is a error log.")
    logger2.critical("This is a critical log.")
    结果:
    2019-10-06 11:18:37,757- [112]--logging configparse hashlib.py-INFO - This is a info log.
    2019-10-06 11:18:37,758- [113]--logging configparse hashlib.py-WARNING - This is a warning log.
    2019-10-06 11:18:37,758- [114]--logging configparse hashlib.py-ERROR - This is a error log.
    2019-10-06 11:18:37,758- [115]--logging configparse hashlib.py-CRITICAL - This is a critical log.
    2019-10-06 11:18:37,758- [119]--logging configparse hashlib.py-INFO - This is a info log.
    2019-10-06 11:18:37,758- [120]--logging configparse hashlib.py-WARNING - This is a warning log.
    2019-10-06 11:18:37,758- [121]--logging configparse hashlib.py-ERROR - This is a error log.
    2019-10-06 11:18:37,758- [122]--logging configparse hashlib.py-CRITICAL - This is a critical log.

  • 相关阅读:
    对 String 的几个错误认识 X
    用C# 自定义Window7的JumpList(跳转列表) X
    IPv6无状态自动配置功能配合DHCPv6无状态配置功能 实现IPv6自动分配
    H3C S7500E IPV6白皮书
    静默方式执行chkdsk命令
    IPv6基本知识(转载)
    解决win7官方主题themepack无法安装的问题
    英保通等PXE网刻软件的使用
    通过命令提示符修改windows默认打印机
    OFFICE2010出现两个激活信息的处理办法。
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11626589.html
Copyright © 2011-2022 走看看