Python的log日志功能及设置方法
作者:DefaultTest 发布时间:2022-03-28 22:13:32
引入:Python中有个logging模块可以完成相关信息的记录,在debug时用它往往事半功倍
一、日志级别(从低到高):
DEBUG :详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL :一个严重的错误,这表明程序本身可能无法继续运行
注:这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。
二、日志输出:显示到控制台或保存到文件中,可以灵活选用
# 这里为了简便,同时处理:输出控制台和保存到文件中
import logging
# 第一步,创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.INFO) # Log等级总开关
# 第二步,创建一个handler,用于写入日志文件
logfile = './log.txt'
fh = logging.FileHandler(logfile, mode='a') # open的打开模式这里可以进行参考
fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关
# 第三步,再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING) # 输出到console的log等级的开关
# 第四步,定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 第五步,将logger添加到handler里面
logger.addHandler(fh)
logger.addHandler(ch)
# 日志
logger.debug('这是 logger debug message')
logger.info('这是 logger info message')
logger.warning('这是 logger warning message')
logger.error('这是 logger error message')
logger.critical('这是 logger critical message')
三、日志格式说明
logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息,如下:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
来源:https://blog.csdn.net/DefaultTest/article/details/81069860


猜你喜欢
- 我们可以用动态产生变量的方法,从表格里捕捉数据,动态地创造“剥离”变量引号并且“清理”它,见下列代码,我们只需键入变量名称,选择 query
- 描述符类要求:描述符就是将某种特殊类型的类的实例指派给另一个类的属性至少要实现以下的一个方法:•__get__(self, instance
- 询问度娘搭好appium和python环境,开启移动app自动化的探索(基于Android),首先来记录下如何启动待测的app吧!如何启动A
- 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一
- 大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join)、右联结(right jo
- 本文实例讲述了Python实现的直接插入排序算法。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-'
- APScheduler简介在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定
- 使用.net2005自带的SQL-Express连接不上。解决方法:1.网络防火墙阻止数据库连接;2.默认SQL-Express没有启动Sa
- 问题描述:在pyhton脚本中logging.info("hello world")希望输出'hello wor
- 前言pandas处理时间的对象有很多,分别表示不同的作用。本次介绍固定时间对象和时间长对象。还是先导入包:import numpy as n
- 解决window.open后返回object的错误 <a href="javascript:void(window.open
- 本文实例为大家分享了css+html+js实现五角星评分的具体代码,供大家参考,具体内容如下效果图:css:<style>&nb
- 话说用了就要有点产出,要不然过段时间又忘了,所以在这里就记录一下试用Kafka的安装过程和php扩展的试用。实话说,如果用于队列的话,跟PH
- 我们再用Jupyter-notebook,ipython-console,qtconsole的时候,有的时候画图希望不弹出窗口,直接画在co
- 这里提供三种方法:1,使用正则表达式Function regKillHTML(str) &nb
- 在设计网页之前,客户或产品经理会提出对网页视觉风格设计的期望:活跃、大气、稳重、信赖、都市化….. 设计师一听到关键词或许很自然地在心里蹦出
- 本文整理了关于Javascript表单验证的所有涉及到的,大家仔细阅读一定会有所收获的 //验证字符串非空 var Validat
- 首先,在models.py中创建UserModels类from django.db import modelsfrom django.con
- 最近用到了mysql5.7的json字段的检索查询,发现挺好用的,记录一下笔记我们有一个日志表,里面的data字段是保存不同对象的json数
- 环境:Pycharm ;其他环境:安装Anaconda最近在做一个小型项目练手,涉及到大量的IP和相关数据处理,所以选用了Python来处理