首页 > 编程语言 >PYTHON 模块 - logging

PYTHON 模块 - logging

时间:2022-12-18 12:33:50浏览次数:40  
标签:12 logging log PYTHON 18 2022 模块 级别

1.1 loggin日志模块

用print函数要想同时输出日志信息和时间、所在函数、所在线程等内容是比较困难的。,可以用loggin模块,它是内置的模块。

1.2 日志级别

一共有五个极别,从上到下为由低到高。

日志级别 日志函数 说明
DEBUG debug() 详细的日志信息,主要用于输出调试信息
INFO info() 输出一些关键节点信息,用于确定程序的流程
WARNING warning() 一些不期望的事情发生时输出信息(如磁盘可用空间较低),但是此时程序还正常运行。
ERROR error() 由于严重问题导致某些功能不能正常运行。
CRITICAL critical() 发生严重错误,导致应用程序不通继续运行时的信息
import logging
logging.basicConfig(level=logging.ERROR)  # 基本配置,设置级别为ERROR

logging.debug("这是DEBUG级别信息")
logging.info("这是INFO级别信息")
logging.warning("这是WARNING级别信息")
logging.error("这是ERROR级别信息")
logging.critical("这是CRITICAL级别信息")

输出:

ERROR:root:这是ERROR级别信息
CRITICAL:root:这是CRITICAL级别信息

较低级别的信息就被隐藏了。

我们发现输出的是:root,如果报告是哪个模块输出的信息:

# filename: test/test_log.py
import logging

def test():
    logging.basicConfig(level=logging.ERROR)
    log = logging.getLogger(__name__)  # __name__ 表示当前的模块
    log.debug("这是DEBUG级别信息")
    log.info("这是INFO级别信息")
    log.warning("这是WARNING级别信息")
    log.error("这是ERROR级别信息")
    log.critical("这是CRITICAL级别信息")

调用时:

# filename: main.py
import test.test_log as mylog
mylog.test()

输出:包名和模块名

ERROR:test.test_log:这是ERROR级别信息
CRITICAL:test.test_log:这是CRITICAL级别信息

1.3 日志信息格式化

日志格式参数 说明
%(name)s 日志器名
%(asctime)s 输出日志时间
%(filename)s 包括路径的文件名
%(levelname)s 日志等级
%(funcName)s 函数名
%(processName)s 进程名
%(threadName)s 线程名
%(message)s 输出的信息

设置:basicConfig()函数的format参数即可。

import logging
import time

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(filename)s - %(funcName)s - %(message)s')
log = logging.getLogger(__name__)
log.debug("这是DEBUG级别信息")
log.info("这是INFO级别信息")
log.warning("这是WARNING级别信息")
log.error("这是ERROR级别信息")
log.critical("这是CRITICAL级别信息")


def funlog():
    log.info('进入funlog函数')
    time.sleep(1)
    log.info('funlog函数执行完毕')


log.info("调用funlog函数...")
funlog()

输出:

2022-12-18 11:56:00,919 - main.py - <module> - 这是INFO级别信息
2022-12-18 11:56:00,919 - main.py - <module> - 这是WARNING级别信息
2022-12-18 11:56:00,919 - main.py - <module> - 这是ERROR级别信息
2022-12-18 11:56:00,919 - main.py - <module> - 这是CRITICAL级别信息
2022-12-18 11:56:00,919 - main.py - <module> - 调用funlog函数...
2022-12-18 11:56:00,919 - main.py - funlog - 进入funlog函数
2022-12-18 11:56:01,920 - main.py - funlog - funlog函数执行完毕

一个递归函数的解析:

import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(funcName)s > %(message)s')
log = logging.getLogger(__name__)


def add(n: int) -> int:
    log.info(f"调用,n当前值是:{n}")
    if n == 1:
        log.info("递归返回中...")
        return 1
    else:
        value = n + add(n - 1)
        log.info("递归返回中...")
        return value


print(add(5))

输出:

2022-12-18 12:04:49,650 - add > 调用,n当前值是:5
2022-12-18 12:04:49,651 - add > 调用,n当前值是:4
2022-12-18 12:04:49,651 - add > 调用,n当前值是:3
2022-12-18 12:04:49,651 - add > 调用,n当前值是:2
2022-12-18 12:04:49,651 - add > 调用,n当前值是:1
2022-12-18 12:04:49,651 - add > 递归返回中...
2022-12-18 12:04:49,651 - add > 递归返回中...
2022-12-18 12:04:49,651 - add > 递归返回中...
2022-12-18 12:04:49,651 - add > 递归返回中...
2022-12-18 12:04:49,651 - add > 递归返回中...
15

1.4 日志写到文件中

在basicConfig中添加关键字参数:

logging.basicConfig(level=logging.INFO, filename="log.txt", format='%(asctime)s - %(funcName)s > %(message)s')
log = logging.getLogger(__name__)

此时信息会输出到:log.txt中。

注意: 文件名指定的路径必须存在。

1.5 停用日志

loggin.disable(level)

这个方法一般放在import下面

import logging
logging.disable(logging.INFO)
logging.basicConfig(level=logging.INFO, filename="log.txt", format='%(asctime)s - %(funcName)s > %(message)s')
log = logging.getLogger(__name__)


def add(n: int) -> int:
    log.info(f"调用,n当前值是:{n}")
    if n == 1:
        log.info("递归返回中...")
        return 1
    else:
        value = n + add(n - 1)
        log.info("递归返回中...")
        return value


print(add(5))

以上没有日志输出。

标签:12,logging,log,PYTHON,18,2022,模块,级别
From: https://www.cnblogs.com/three-sheep/p/16990186.html

相关文章

  • Python 为什么如此设计?
    大概两年半前,我萌生了要创作一个新的系列文章的想法,也就是“Python为什么”,试图对Python的语法及特性提出“为什么”式的问题,以此加深对它的理解,探寻使用技巧、发展演变......
  • 短网址解析长网址python示例
    做可视化比较麻烦我就没做,用文件处理的,这里需要两个文件1、readUrl.txt文件保存需要解析的字符串2、newUrl.txt文件保存解析完成的字符串目录​​readUrl.txt文件示例​​​......
  • 走过岁月我才发现——云IDE真方便(Python3.8环境测试)
    目录​​产品测试:​​​​创建工作空间​​​​插件安装​​​​创建python文件​​​​运行python文件​​​​Demo测试​​​​查看环境piplist​​​​云IDE挑战赛​​......
  • 【python/pycharm】豆瓣top250电影
    学弟给的importreimportrequestsurl="https://movie.douban.com/top250"headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/5......
  • python中实现保留几位小数的几种方式
    方式一:format()format(1.235,'.2f')Out[1]:'1.24'format(1.2,'.2f')Out[2]:'1.20'format(1.2,'.3f')Out[3]:'1.200'返回值为字符串类型,末位会自动补0......
  • 【python/pycharm】哆啦A梦
    #!/usr/bin/envpython3#-*-coding:utf-8-*-#@Author:dong#@Date:2018-07-0519:37:42#@Env:python3.6#@Github:https://github.com/PerpetualSmilef......
  • 了解模块、导入模块、as定义别名
    一、模块Python模块(Module),是一个python文件,以.py结尾,包含了python对象定义和python语句。模块能定义函数、类和变量,模块里也能包含可执行的代码。1.1导入模块......
  • Python之⾯向对象-继承
    一、继承的概念⽣活中的继承,⼀般指的是⼦⼥继承⽗辈的财产。拓展1:经典类或旧式类不由任意内置类型派⽣出的类,称之为经典类。class类名:代码......拓展2:新式类class类名......
  • Android平台GB28181设备接入模块摄像头采集方向不对怎么办?
    技术背景我们在做Android平台GB28181设备接入模块的时候,有开发者提到这样的诉求:他们的智能头盔、执法记录仪等设备,采集到的图像,是旋转了90、180甚至270°的,设备本身无法针对......
  • 开个坑,明天学点Gdb+Python脚本!!!! 22:13 2022年12月17日(星期六)
    写在前面我发现如果调试如果一直截图,其实对于我来说,需要找回当时的记忆,可以一声熬,才能拥有和当时一样的见解。最近心得以前没有记录的习惯,导致很多知识,比如defer的创......