1. logging日志的介绍

在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录;飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序在运行时所产生的日志信息,怎么做呢?

可以使用 logging 这个包来完成

记录程序日志信息的目的是:

1. 可以很方便的了解程序的运行情况

2. 可以分析用户的操作行为、喜好等信息

3. 方便开发人员检查bug

2. logging日志级别介绍

日志等级可以分为5个,从低到高分别是:

1. DEBUG

2. INFO

3. WARNING

4. ERROR

5. CRITICAL

日志等级说明:

DEBUG:程序调试bug时使用

INFO:程序正常运行时使用

WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误

ERROR:程序出错误时使用,如:IO操作失败

CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使 用

默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。

日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

3. logging日志的使用

在 logging 包中记录日志的方式有两种:

1.输出到控制台

2.保存到日志文件

日志信息输出到控制台的示例代码:

import logging

logging.debug('这是⼀个debug级别的⽇志信息')

logging.info('这是⼀个info级别的⽇志信息')

logging.warning('这是⼀个warning级别的⽇志信息')

logging.error('这是⼀个error级别的⽇志信息')

logging.critical('这是⼀个critical级别的⽇志信息')

运行结果:

WARNING:root:这是⼀个warning级别的⽇志信息

ERROR:root:这是⼀个error级别的⽇志信息

CRITICAL:root:这是⼀个critical级别的⽇志信息

说明:

日志信息只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING

logging日志等级和输出格式的设置:

import logging

# 设置⽇志等级和输出⽇志格式

logging.basicConfig(level=logging.DEBUG,

format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')

logging.debug('这是⼀个debug级别的⽇志信息')

logging.info('这是⼀个info级别的⽇志信息')

logging.warning('这是⼀个warning级别的⽇志信息')

logging.error('这是⼀个error级别的⽇志信息')

logging.critical('这是⼀个critical级别的⽇志信息')

运行结果:

2019-02-13 20:41:33,080 - hello.py[line:6] - DEBUG: 这是⼀个debug级别的⽇志信息

2019-02-13 20:41:33,080 - hello.py[line:7] - INFO: 这是⼀个info级别的⽇志信息

2019-02-13 20:41:33,080 - hello.py[line:8] - WARNING: 这是⼀个warning级别的⽇志信息

2019-02-13 20:41:33,080 - hello.py[line:9] - ERROR: 这是⼀个error级别的⽇志信息

2019-02-13 20:41:33,080 - hello.py[line:10] - CRITICAL: 这是⼀个critical级别的⽇志信息

代码说明:

level 表示设置的日志等级

format 表示日志的输出格式, 参数说明:

%(levelname)s: 打印日志级别名称

%(filename)s: 打印当前执行程序名

%(lineno)d: 打印日志的当前行号

%(asctime)s: 打印日志的时间

%(message)s: 打印日志信息

日志信息保存到日志文件的示例代码:

import logging

logging.basicConfig(level=logging.DEBUG,

format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',

filename="log.txt",

filemode="w")

logging.debug('这是⼀个debug级别的⽇志信息')

logging.info('这是⼀个info级别的⽇志信息')

logging.warning('这是⼀个warning级别的⽇志信息')

logging.error('这是⼀个error级别的⽇志信息')

logging.critical('这是⼀个critical级别的⽇志信息')

运行结果:

4. logging日志在mini-web项目中应用

web.py 程序使用logging日志示例:

1. 程序入口模块设置logging日志的设置

import socket

import threading

import sys

import framework

import logging

# logging⽇志的配置

logging.basicConfig(level=logging.DEBUG,

format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',

filename="log.txt",

filemode="w")

2. INFO级别的日志输出,示例代码:

# 判断是否是动态资源请求

if request_path.endswith(".html"):

"""这⾥是动态资源请求,把请求信息交给框架处理"""

logging.info("动态资源请求:" + request_path)

...

else:

"""这⾥是静态资源请求"""

logging.info("静态资源请求:" + request_path)

3. WARNING级别的日志输出,示例代码:

# 获取命令⾏参数判断⻓度

if len(sys.argv) != 2:

print("执⾏命令如下: python3 xxx.py 9000")

logging.warning("⽤⼾在命令⾏启动程序参数个数不正确!")

return

# 判断端⼝号是否是数字

if not sys.argv[1].isdigit():

print("执⾏命令如下: python3 xxx.py 9000")

logging.warning("⽤⼾在命令⾏启动程序参数不是数字字符串!")

return

framework.py 程序使用logging日志示例:

1.ERROR级别的日志输出,示例代码:

# 处理动态资源请求

def handle_request(env):

# 获取动态请求资源路径

request_path = env["request_path"]

print("接收到的动态资源请求:", request_path)

# 遍历路由列表,选择执⾏的函数

for path, func in route_list:

if request_path == path:

result = func()

return result

else:

logging.error("没有设置相应的路由:" + request_path)

# 没有找到动态资源

result = not_found()

return result

说明:

logging日志配置信息在程序入口模块设置一次,整个程序都可以生效。

logging.basicConfig 表示 logging 日志配置操作

5. 小结

记录python程序中日志信息使用 logging 包来完成

logging日志等级有5个:

1. DEBUG

2. INFO

3. WARNING

4. ERROR

5. CRITICAL

打印(记录)日志的函数有5个:

1. logging.debug函数, 表示: 打印(记录)DEBUG级别的日志信息

2. logging.info函数, 表示: 打印(记录)INFO级别的日志信息

3. logging.warning函数, 表示: 打印(记录)WARNING级别的日志信息

4. logging.error函数, 表示: 打印(记录)ERROR级别的日志信息

5. logging.critical函数, 表示: 打印(记录)CRITICAL级别的日志信息

到此这篇关于Python中logging日志的四个等级和使用的文章就介绍到这了,更多相关Python logging日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python log日志_Python中logging日志的四个等级和使用相关推荐

  1. python log模块_Python日志模块-logging

    一.logging模块 日志的作用可以简单总结为以下3点: 1.程序调试 2.了解软件程序运行情况,是否正常 3.软件程序运行故障分析与问题定位 1.日志的等级 不同的应用程序所定义的日志等级可能会有 ...

  2. python中logging(日志)配置三种方式

    超详细日志文档 python中,logging由logger.handler.filter.formater四个部分组成: logger(记录器):提供我们记录日志的方法: handler(处理器): ...

  3. python log模块_python日志模块logbook使用方法

    python自带了日志模块logging,可以用来记录程序运行过程中的日志信息.同时python还有logbook模块用来取代logging模块,在很多的项目中logbook模块使用也是比较的多,因此 ...

  4. python log文件_Python logging基本使用

    1.打印到控制台 #-*- coding: UTF-8 -*- importloggingdeflogFileTest(): logging.debug('This is debug') loggin ...

  5. python 输出log_Python常用模块logging——日志输出

    用途 logging模块是Python的内置模块,主要用于输出运行日志,可以灵活配置输出日志的各项信息. 基本使用方法 logging.basicConfig(level=logging.DEBUG, ...

  6. python syslog 接口_python接口测试之日志功能

    之前在简书中看了一篇关于日志功能的文档,供大家参考:https://www.jianshu.com/p/62f7b49b41e7 Python通过logging模块提供日志功能,所以直接导入即可 im ...

  7. python中log1p用法_python中logging模块的基本用法

    1.logging模块可以跟踪代码的运行记录事件,log信息共内置了5个层级--调试(debug).信息(info).警告(warning).错误(error).严重错误(critical) 2.lo ...

  8. python配置文件解析_Python中配置文件解析模块-ConfigParser

    Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置). 配置文件的格式是: []包含的叫section, section 下有option=valu ...

  9. python调试方法logging_python中logging使用方法

    1.logging提供了一组便利的函数,用来做简单的日志.它们是 debug(). info(). warning(). error() 和 critical(). 1.1logging以严重程度递增 ...

最新文章

  1. Java中实现按字符串位数在前面补0
  2. easyui结合java,Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试
  3. python使用turtle库绘制玫瑰花
  4. Java字节转换为比特位及相关
  5. Java 多线程基本概念
  6. 【Django 2021年最新版教程5】前端传递数据到后端处理 GET 方法
  7. mac linux 引导分区,Paragon ExtFS For Mac v10.0.829 | Linux分区数据读写驱动 _ 黑苹果乐园...
  8. 比特球云盘,离线播放云下载探析
  9. java语言难度最大的地方_学习难度最高的五大编程语言
  10. 给俺老婆的一封信(太有才了!)
  11. 问题 K: 蜗牛1534
  12. spark kryo java_Spark 配置Kryo序列化机制
  13. GitHub 狂飙 30K+star 面试现场, 专为程序员面试打造, 现已开源可下载
  14. Metasploit入侵win7系统
  15. 知领·报告 | 车路协同技术发展态势分析报告.md
  16. 『重磅』免费无限量下载知网/万方/维普等数据库文献的正规渠道
  17. java使用md5以及jar包下载
  18. 我的世界服务器物品栏太小咋办,《我的世界》MC背包容量太小?这四个装东西的道具了解一下!...
  19. MOTO sbf文件 打包 封包 修改
  20. OAuth 2.0安全案例回顾

热门文章

  1. Cross-Validation(交叉验证)详解
  2. 地理数据库 (geodatabase) 的架构
  3. 使用jsonpath从kettle转换json2csv
  4. 推荐系统(工程方向)-策略平台
  5. Maven内置属性及使用
  6. LeetCode 100.相同的树(C++)
  7. Exchange Server外网映射规则注意事项
  8. MariaDB杂记(2)
  9. Linux下安装Redmine(项目管理软件)
  10. 将DataFrame数据如何写入到Hive表中