Python基础之logging模块知识总结
作者:_雪辉_ 发布时间:2021-12-20 04:20:07
标签:Python,logging,模块
前言
logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。
可以通过设置不同的日志等级,在 release 版本中只输出重要信息,而不显示大量的调试信息
logging 可以决定将信息输出位置和内容
logging 线程更安全
一、日志级别
级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
debug : 打印全部日志,详细信息,通常只出现在诊断问题
info : 打印info,warning,error,critical级别的日志,正常输出
warning : 打印warning,error,critical级别的日志,部分异常,不影响程序
error : 打印error,critical级别的日志,影响程序部分功能
critical : 打印critical级别,影响程序运行
import logging # 引入logging模块
# 将信息打印到控制台上
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
[root@zijie ~]# python log.py
WARNING:root:warning
ERROR:root:error
CRITICAL:root:critical
默认生成的root logger的level是logging.WARNING,低于该级别不输出,如果要展示低于WARNING级别的内容,可以引入logging.basicConfig指定日志级别logging.basicConfig(level=logging.DEBUG)
二、basicConfig
格式 | 描述 |
filename | 指定使用指定的文件名而不是 StreamHandler 创建 FileHandler。 |
filemode | 如果指定 filename,则以此模式打开文件(‘r'、‘w'、‘a')。默认为“a”。 |
format | 为处理程序使用指定的格式字符串。 |
datefmt | 使用 time.strftime() 所接受的指定日期/时间格式。 |
style | 如果指定了格式,则对格式字符串使用此样式。'%' 用于 printf 样式、'{' 用于 str.format()、'$' 用于 string。默认为“%”。 |
level | 将根记录器级别设置为指定的级别。默认生成的 root logger 的 level 是 logging.WARNING,低于该级别的就不输出了。级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG。(如果需要显示所有级别的内容,可将 level=logging.NOTSET) |
stream | 使用指定的流初始化 StreamHandler。注意,此参数与 filename 不兼容——如果两者都存在,则会抛出 ValueError。 |
handlers | 如果指定,这应该是已经创建的处理程序的迭代,以便添加到根日志程序中。任何没有格式化程序集的处理程序都将被分配给在此函数中创建的默认格式化程序。注意,此参数与 filename 或 stream 不兼容——如果两者都存在,则会抛出 ValueError。 |
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s %(levelname)s %(message)s',
datefmt='%a %d %b %Y %H:%M:%S',
filename='xuehui.log',
filemode='w')
logging.info('This is a info.')
logging.debug('This is a debug message.')
logging.warning('This is a warning.')
三、日志写文件
import logging
import os.path
import time
#创建logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 创建handler,用于写入日志文件
logdate = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
log_path = 'logs/'
log_name = log_path + logdate + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG)
# 定义输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
# 将logger添加到handler
logger.addHandler(fh)
# 日志
logger.debug('this is a logger debug message')
logger.info('this is a logger info message')
logger.warning('this is a logger warning message')
logger.error('this is a logger error message')
logger.critical('this is a logger critical message')
四、traceback记录
import logging
import os.path
import time
#创建logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 创建handler,用于写入日志文件
logdate = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
log_path = 'logs/'
log_name = log_path + logdate + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG)
# 定义输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
# 将logger添加到handler
logger.addHandler(fh)
# 日志
try:
open('/data/exist', 'rb')
except BaseException as e:
logger.error('Failed to open file', exc_info=True)
来源:https://blog.csdn.net/qq_42979842/article/details/116875907
0
投稿
猜你喜欢
- seek()方法在偏移设定该文件的当前位置。参数是可选的,默认为0,这意味着绝对的文件定位,它的值如果是1,这意味着寻求相对于当
- 豆瓣镜像源:https://pypi.douban.com/simple/file >> setting最后点击OK即可PyCh
- <?php # 设置 $domain 为你的域名 (注意没有www) $domain = "aspxhome.com&quo
- 代码如下:Class template Private c_Char, c_Path, c
- 前言python中常用的写爬虫的库常有urllib2、requests,对于大多数比较简单的场景或者以学习为目的,可以用这两个库实现。这里有
- 前言昨天团队的学妹来问关于POP3协议的问题,所以今天稍稍研究了下POP3协议的格式和Python里面的poplib。而POP服务器往回传的
- 本文例举了ASP实例关于ASP与ACCESS链接的两种方式。<%dim dd,connstrdd="data.mdb&quo
- 方法1:import requestsurl = "http://www.xxxx.net/login"#参数拼凑,附件
- 如何用METADATA替换ADOVBS.INC? 在ASP中,使用组件时,如ADO,得先包含
- Python 格式化输出字符串(输出字符串+数字的几种方法)1. 介绍字符串格式化输出是python非常重要的基础语法。格式化输出:内容按照
- 需求需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,
- 问题描述前端 vue 框架,后台 php,百度跨域问题后台加这段代码header("Access-Control-Allow-Or
- 很多设计师都会遇到这样的问题。一个产品会有很多种方式去包装,其中包括很多功能和很多体验。功能越多会被认为越实用,体验越好会被认为越方便。方便
- 一、下载anaconda第一步当然是下载anaconda了,官方网站的下载需要用迅雷才能快点,或者直接到清华大学镜像站下载。当然这里推荐脚本
- 一.GO程序目录结构在GOPATH目录下的结构--bin(存放编译后生成的可执行文)|----hello.exe(可执行文件)--pkg(存
- asp中我们可以利用ERR对象来判断sql语句执行是否成功:SQL="Insert INTO TABLE(F1,F2) value
- 前言最近在学习python-igraph,发现其实学习一种全新的语言看官方的文档是真的很有帮助,这次我的大部分python代码的完成都是靠着
- 本文实例为大家分享了python实现飞机大战的具体代码,供大家参考,具体内容如下实现的效果如下: 主程序代码如下:import p
- XML.DOM需求有一个表,里面数据量比较大,每天一更新,其字段可以通过xml配置文件进行配置,即,可能每次建表的字段不一样。上游跑时会根据
- 一个项目开发完毕后总有一种想法,就是生成可执行文件,总不能一直用python xxx执行吧。以下操作同时适用于windows和Linux下的