python日志系统-logging

时间主题12.25(周三)20:00 自动化运维工具-Ansible

在之前测试运维试听课程中,芒果给大家介绍了python日志系统-logging的使用,这里我们来做个小总结。日志相关概念介绍日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可以用一个可包含可选变量数据的消息来描述。日志的作用:通过对日志的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用日志足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的日志同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。logging介绍logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。logging模块的日志级别:logging模块默认定义了以下几个日志等级,它允许开发人员自定义其他日志级别,但是这是不被推荐的,尤其是在开发供别人使用的库时,因为这会导致日志级别的混乱。DEBUG最详细的日志信息,典型应用场景是 问题诊断INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息logging使用范例简单配置用 logging.basicConfig()函数调整日志级别、输出格式等,使用logging的时日输入函数输出日志。示例:import logginglogging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(name)s %(levelname)s %(message)s",                    datefmt = "%Y-%m-%d  %H:%M:%S %a")   logging.debug("debug_msg")logging.info("info_msg")logging.warning("warning_msg")logging.error("error_msg")logging.critical("critical_msg")默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG)默认输出格式为默认的日志格式为日志级别:Logger名称:用户输出消息日志流处理流程在介绍logging模块的日志流处理流程之前,我们先来介绍下logging模块的四大组件:日志器Logger提供了应用程序可一直使用的接口处理器Handler将logger创建的日志记录发送到合适的目的输出过滤器Filter提供了更细粒度的控制工具来决定输出哪条日志记录,丢弃哪条日志记录格式器Formatter 决定日志记录的最终输出格式logging模块就是通过这些组件来完成日志处理的,上面所使用的logging模块级别的函数也是通过这些组件对应的类来实现的。示例:import loggingimport logging.handlersimport datetimeimport sysdef handle_log(): my_logger = logging.getLogger("my_logger") my_logger.setLevel(logging.DEBUG)all_handler = logging.handlers.TimedRotatingFileHandler( "all_test.log", when="midnight", interval=1, backupCount=7, atTime=datetime.time(0,0,0,0) ) all_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) all_handler.setLevel(logging.DEBUG)err_handler = logging.FileHandler("error_test.log") err_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s")) err_handler.setLevel(logging.ERROR)my_logger.addHandler(all_handler) my_logger.addHandler(err_handler)return my_loggerdef log_test(logger): logger.debug("debug_msg") logger.info("info_msg") logger.warning("warning_msg") logger.error("error_msg")    logger.critical("critical_msg")if __name__ == '__main__': logger = handle_log()    log_test(logger)后续的啰啰嗦嗦当然除了课程内容除了这些基本的介绍,芒果还给大家介绍了,关于带大家学习如何利用配置文件方式来决定日志输出等内容。

(0)

相关推荐

  • 弃繁就简!一行代码搞定 Python 日志!

    来源:Python 技术「ID: pythonall」 写了这么多年的 Python ,我一直都是使用 Python 自带的 logging 模块来记录日志,每次需要写一些配置将日志输出到不同的位置, ...

  • 部署 Flask 应用

    Web 应用只有部署到服务器上才能被真正的使用,前面我们了解了用 Flask 开发 Web 应用,今天就来了解下,如何部署 Flask 应用. 与开发应用相比,部署应用,多些工作,如处理日志,服务器状 ...

  • 应用程序Python的日志记录模板 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 4天前 通过定义明确,信息量大且结构方便的日志,调试和跟踪应用程序执行的理想方式. 它们是任何编程语言(不仅仅是Python)中任何大型,中型或大型项目必不可少的组成部 ...

  • python笔记46-史上最强大最好用的python日志模块nb_log

    前言 python的日志模块如何封装一值都是一个头疼的问题,封装的不好总是会出现重复打印等头疼问题. 现在终于找到一个最好用的日志模块nb_log,此日志模块由这位大佬开发的https://www.c ...

  • 第32天:Python logging 模块详解

    This module defines functions and classes which implement a flexible event logging system for applic ...

  • Python 日志打印之logging.config.dictConfig使用总结

    #实践环境 WIN 10 Python 3.6.5 #函数说明 logging.config.dictConfig(config) dictConfig函数位于logging.config模块,该函数 ...

  • python 日志 按日期或大小归档

    随着回调的事件与越来越多,如果每个事件都写一个方法,这就显得代码的冗余,所以,今天将日志都归档,分类 事件日志,看情况,我们一般保留10天,至于错误日志,一般不会报错,所以我们按文件的大小进行分类 # ...

  • python日志输出你会想到啥?不妨来看看这几个模块的用法

    日志可以说是每个开发人员必备的功能 ,通过它可以方便的帮我们找出程序中的一些错误 ,因此要使用到一个好的日志模块或方法对我们来说,也是比较重要的 .接下来我们就介绍python中支持输出日志的4个方法 ...

  • Docker构建日志系统-ELK

    前言 日志在系统中扮演着监护人的身份,它是保障高可靠服务的基础,记录了系统的一举一动.运维层面.业务层面.安全层面都有日志的身影,系统监控.异常处理.安全.审计等都离不开日志的协助. 简而言之,日志是 ...

  • 以就业为目的自学Python 如何系统学习不走弯路!

    给大家详细分析一下这个问题首先告诉你的是,零基础学习开始系统学习Python肯定难,Python的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个 ...

  • 只需一招,Python 将系统秒变在线版!

    来源:Python 技术「ID: pythonall」 上一期,谈了如何用 Python 打造运营系统 的过程,虽然以及很方便了,但是还有很多需要人工执行的地方,不是特别方便. 更重要的是无法及时为大 ...

  • Python对系统数据进行采集监控——psutil

    大家好,我是辰哥- 今天给大家介绍一个可以获取当前系统信息的库--psutil 利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达 ...