Python学习笔记(25)-Python日志使用详解与实例

1. 简介

本篇主要演示为何使用日志,如何输出日志,如何设置日志的级别,如何限制各级别的日志的输出以及如何将日志输出到文件。

2. 为何使用日志

使用print()函数输出调试信息是非常不正确的,最简单的原因就是:print()会遍布于程序各处,当程序员不想再输出调试信息时,需要一处一处的去查找然后注释掉print(),非常麻烦。

所以需要注意的是,print()函数实际上是输出给用户看到,就如input()是用来接收用户输入一样。

日志却是用来显示给程序员看的信息的,日志信息可以区分日志信息的严重级别,同时可以轻易的选择是调试状态还是运行状态(可以区分显示的日志级别)。

3. 如何输出日志

首先导入日志模块logging,然后对其进行配置,主要配置日志级别(稍后具体讲,日志输出的格式)。代码如下:

#导入日志模块
import logging

#日志模块配置(DEBUG级别,格式为:时间-级别-消息)
logging.basicConfig(level=logging.DEBUG,format="%(asctime)s-%(levelname)s:%(message)s")

#输出日志
logging.debug("debug日志")

4. 日志级别

主要有五种,可以通过logging.basicConfig中的level参数修改级别。

DEBUG:小问题,一般在调试时才会使用
INFO:正常运行消息
WARNING:警告,可能有问题
ERROR:错误,导致程序部分处理失败
CRITICAL:致命的问题,程序都要完蛋

如果设置级别为DEBUG,则会输出所有级别日志
如果设置级别为ERROR,则只会输出ERROR和更高的CRITICAL级别的日志。

例如:

#导入日志模块
import logging

#日志模块配置(级别,格式为:时间-级别-消息)
logging.basicConfig(level=logging.ERROR,format="%(asctime)s-%(levelname)s:%(message)s")

#输出日志
logging.debug("debug日志")#不会输出
logging.error("error日志")#会输出
logging.critical("critical日志")#会输出

5. 日志禁用

如果在程序都调试完了,准备运行了,只想输出CRITICAL级别及以上级别的日志,则可以调用logging.disable(logging.ERROR),该方法的功能是禁用该级别及更低级别的日志。

例如:

#导入日志模块
import logging

#日志模块配置(级别,格式为:时间-级别-消息)
logging.basicConfig(level=logging.ERROR,format="%(asctime)s-%(levelname)s:%(message)s")

#禁用日志
logging.disable(logging.ERROR)


#输出日志
logging.debug("debug日志")#不会输出
logging.error("error日志")#不会输出
logging.critical("critical日志")#会输出

6. 将日志输出到文件

直接举例即可,只是在basicConfig中添加filename参数即可。

#导入日志模块
import logging

#日志模块配置(级别,格式为:时间-级别-消息)
logging.basicConfig(filename="C:\\runlog.txt",level=logging.ERROR,format="%(asctime)s-%(levelname)s:%(message)s")

#输出日志
logging.error("debug日志")

如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
相关推荐
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质? 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹?   那么C++就是你个人能力提升,职业之路进阶的不二之选。 【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署; 2.吊打一切关于C++的笔试面试题; 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块 基础篇 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 进阶篇 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 提升篇: 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页