• Python之logging模块的使用


    1  logging模块相关概念

    日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可以用一个可包含可选变量数据的消息来描述。此外,事件也有重要性的概念,这个重要性也可以被称为级别(level)。

    1.1  日志的作用

    通过log的分析,可以方便用户了解系统或软件、应用的运行情况:

    • 如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;
    • 如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。

    简单来讲就是,我们通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。比如,做运维的同学,在接收到报警或各种问题反馈后,进行问题排查时通常都会先去看各种日志,大部分问题都可以在日志中找到答案;再比如,做开发的同学,可以通过IDE控制台上输出的各种日志进行程序调试。对于运维老司机或者有经验的开发人员,可以快速的通过日志定位到问题的根源。可见,日志的重要性不可小觑。日志的作用可以简单总结为以下3点:

    1. 程序调试;
    2. 了解软件程序运行情况,是否正常;
    3. 软件程序运行故障分析与问题定位。

    如果应用的日志信息足够详细和丰富,还可以用来做用户行为分析,如:分析用户的操作行为、类型洗好、地域分布以及其它更多的信息,由此可以实现改进业务、提高商业利益。

    1.2  日志的等级

    日志一共分成5个等级,从低到高分别是:DEBUG、INFO、WARNING、ERROR、CRITICAL。

    • DEBUG:详细的信息,通常只出现在诊断问题上;
    • INFO:确认一切按预期运行;
    • WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作;
    • ERROR:更严重的问题,软件没能执行一些功能;
    • CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行。

    默认的是WARNING,当在WARNING或之上时才被跟踪。

    1.3  日志字段信息

    一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:

    • 事件发生时间
    • 事件发生位置
    • 事件的严重程度--日志级别
    • 事件内容

    上面这些都是一条日志记录中可能包含的字段信息,当然还可以包括一些其他信息,如进程ID、进程名称、线程ID、线程名称等。日志格式就是用来定义一条日志记录中包含那些字段的,且日志格式通常都是可以自定义的。

    [参考文章1][参考文章2]

    2  logging模块的使用

     1 import os, logging
     2 
     3 logging.basicConfig(  # 初始化日志对象
     4     level=logging.DEBUG,  # 日志级别
     5     datefmt='%a, %d %b %Y %H:%M:%S',  # 打印日志的时间
     6     format='%(asctime)s	%(filename)s[line:%(lineno)d]	%(levelname)s		%(message)s',  # 时间、代码文件、代码行号、日志级别、日志信息
     7     filename=os.path.basename(__file__)[:-3] + '.log',  # 日志文件存放的目录(目录必须存在)及日志文件名
     8     filemode='w'  # 打开日志文件的方式
     9 )
    10 
    11 logging.debug("debug level")  # 插入debug级别日志
    12 logging.info("info level")  # 插入info级别日志
    13 logging.warning("warning level")  # 插入warning级别日志
    14 logging.error("error level")  # 插入error级别日志
    15 logging.critical("critical level")  # 插入critical级别日志
    参考文章2
    [Cānkǎo wénzhāng 2]
    Reference article 2
  • 相关阅读:
    Oracle通过表名获取所有列名类型(转)
    shell截取文件中的关键字
    VC6.0快捷键 与 Visual Assist X 快捷键(转载)
    mktime()函数使用
    OCI函数简单解析(转载)
    剑指offer16-合并两个排序的链表
    剑指offer17-树的子结构
    剑指offer30-连续子数组的最大和
    剑指offer-整数中1出现的次数
    剑指offer32-把数组排成最小的数
  • 原文地址:https://www.cnblogs.com/qijunhui/p/11379234.html
Copyright © 2020-2023  润新知