python学习——logging模块

logging模块

  • 作用:为应用程序提供灵活的手段记录时间错误,警告和调试信息。简单的说就是为整个应用程序的运行过程提供有区分等级应用执行日志文档
  • 使用方法:
    • import logging
    • 整模块(对象)的基本配置:logging.basicConfig()
    • 创建logger对象:
      • 创建:logger = logging.getLogger(name)
      • 命名规范:name 尽量为命名为应用程序的名字
      • 发送日志消息到控制台
        • logger.info(“Start print log”)
        • logger.debug(“Do something”)
        • logger.warning(“Something maybe fail.”)
        • logger.error(“Finish”)
        • logger.critical(‘hah’)
    • 日志消息的筛选器
      • logger.setLevel(level):等级设置
      • logger.isEnabledFor(level):明确是否处理该等级的消息
      • 添加筛选器,移除筛选器;对象筛选器,内置筛选器 为Filter(可以通过类继承自定义筛选器)。
      • 分层记录器和消息传播控制(默认传播)
    • 日志消息的处理器
      • 内置处理器模块:具体见下面链接
      • 处理器配置:等级设置、增加处理器和移除处理器
      • 处理器的清理和关闭
    • 日志消息的格式化
      • 创建Formatter对象
      • 将对象添加到处理器中
      • 将处理器添加到消息日志中
    • 上下文额外信息添加的方法
      • 在发送日志方法的消息后面自动添加extra= ()
      • 使用logAdapter包装。推荐此方法灵活自动添加
    • 工具函数
      • 看键接:

代码

'''
logging模块作用:为应用程序提供灵活的手段记录事件、错误、警告、调试信息;
对信息进行收集、筛选、写入文件,发送系统日志,甚至可以同步发送给远程计算机
'''

'''
日志记录级别:
CRUTICAL、ERROR、WARNING、INFO、DEBUG、NOTSET
'''

# 网上案列____发出日志消息
import logging
# 基本配置语句
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#
logger = logging.getLogger('a')
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




# 案列1___发出日志消息
import Hello
import logging
# 下面语句为特殊对象基本配置语句,接受关键字参数,根记录器。具体参数见书P287
logging.basicConfig(
    filename= 'app.log',
    format= '%(levelname)-10s %(asctime)s %(message)s',
    level= logging.INFO
)
log = logging.getLogger('app')
# 关键字对,字典插入尝试
parms = {
    
    
    'host' : 'www.python.org',
    'port' : 80
}
log.critical("Can't connect to %(host)s at port %(port)d", parms)
'''
其它发送日志信息的方法:看书
log.exception()
log.log()
log.findCaller()
'''
# 得到一个logger对象
logger = logging.getLogger(__name__)
# 设置logger内置对象级别
logger.setLevel(level = logging.INFO)
# 调用内置处理器,将消息日志写入文件,只有处理器不能运行
handler = logging.FileHandler("app.log")
# 为处理器设置日志消息级别
handler.setLevel(logging.INFO)
# 日志消息格式化信息
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 设置处理器格式化信息
handler.setFormatter(formatter)
# 为对象增加处理器
logger.addHandler(handler)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)

logger.addHandler(handler)
logger.addHandler(console)

logger.info("Start print log2")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




from logging.handlers import RotatingFileHandler
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
rHandler = RotatingFileHandler("rp.txt",maxBytes = 1*1024,backupCount = 3)
rHandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rHandler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)

logger.addHandler(rHandler)
logger.addHandler(console)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

控制台记录

在这里插入图片描述

文件管理器记录

在这里插入图片描述

学习收获

掌握了消息日志对象的创建、消息日志消息文件格式化、筛选器、处理器,应用之一和异常处理机构共同完成控制台提示:pycharm中的红色消息提示段部分。

深入学习logging链接:

找到几个学python和深度学习的大佬blog:

猜你喜欢

转载自blog.csdn.net/Chaoyuan_Jam/article/details/82896263