python实现简单日志记录库glog的使用
作者:悦悦的小屋 发布时间:2023-01-07 23:14:40
这篇文章主要介绍了python实现简单日志记录库glog的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一、 glog的简介
glog所记录的日志信息总是记录到标准的stderr中,即控制台终端。
每一行日志记录总是会添加一个谷歌风格的前缀,即google-style log prefix, 它的形式如下:
E0924 22:19:15.123456 19552 filename.py:87] some message
上面红色部分加粗的就是谷歌风格的日志前缀,每一个部分都有其含义,定义如下:
(1)第一个字母表示日志的类型,E表示error,I表示info,W表示warning,F表示fatal
(2)紧接在后面的表示记录日志的时间,格式为MMDD,比如这里0924,表示的是9月24日
(3)紧接在日期后面的是时间,格式为HH:MM:SS.microseconds,比如这里的时间是22时19分15秒123456毫秒
(4)紧接着是进程的ID,即Process ID,也就是上面的19552
(5)紧接着是运行的程序文件,比如test.py
(6)最后是记录这一句日志是在文件中的哪一行发生的,比如87,指的是这句话是在py文件中的87行
二、glog有哪些功能
我们大致看一下glog模块里面定义的方法
复制代码
"""A simple Google-style logging wrapper."""
import logging
import time
import traceback
import os
import gflags as flags
# 这些方法其实都是来自于logging模块
debug = logging.debug
info = logging.info
warning = logging.warning
warn = logging.warning
error = logging.error
exception = logging.exception
fatal = logging.fatal
log = logging.log
DEBUG = logging.DEBUG
INFO = logging.INFO
WARNING = logging.WARNING
WARN = logging.WARN
ERROR = logging.ERROR
FATAL = logging.FATAL
#下面这些方法常用来检查某些条件或者是结果,然后根据实际情况输出日志信息
def check_failed(message):
def check(condition, message=None):
def check_eq(obj1, obj2, message=None):
def check_ne(obj1, obj2, message=None):
def check_le(obj1, obj2, message=None):
def check_ge(obj1, obj2, message=None):
def check_lt(obj1, obj2, message=None):
def check_gt(obj1, obj2, message=None):
复制代码
logging提供了一组便利的函数,用来做简单的日志。它们是 debug()、 info()、 warning()、 error() 和 critical()。
logging以严重程度递增排序:
DEBUG:详细信息,一般只在调试问题时使用
INFO:证明事情按预期工作
WARNING:某些没有预料到的时间提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足,但是软件还是会照常运作
ERROR:由于更严重的问题,软件已不能执行一些功能了
CRITICAL:严重错误,表明软件已不能继续运行了
级别排序:CRITICAL>ERROR>WARNING>INFO>DEBUG
默认等级是WARNING
三、glog模块的简单示例
import glog
a=100
if a==100:
glog.info("a=100")
b=0
if b==0:
glog.error("b=0!")
glog.fatal("b is 0")
glog.warn("b is really 0?")
'''运行结果为:
I0626 15:35:54.071558 17300 test.py:10] a=100
E0626 15:35:54.072561 17300 test.py:14] b=0!
F0626 15:35:54.072561 17300 test.py:15] b is 0
W0626 15:35:54.072561 17300 test.py:16] b is really 0?
'''
来源:https://www.cnblogs.com/yuehouse/p/11741993.html


猜你喜欢
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数
- python压缩和解压缩模块之zlib由于早期的zlib和Python之间不兼容,故推荐1.1.4以后的版本。导入zlib后可以查看版本号&
- 较新的pip已经支持list --outdated了,所以记录一下新的方法:pip list --outdated --format=leg
- 运算符的优先级和关联性运算符的优先级和关联性: 运算符的优先级和关联性决定了运算符的优先级。运算符优先级这用于具有多个具有不同优先级的运算符
- 一、前言MYSQL中MDL锁一直是一个比较让人比较头疼的问题,我们谈起锁一般更加倾向于INNODB下层的gap lock、next key
- 前言注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的。Py
- 这篇文章主要介绍了postman和python mock测试过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变
- 百度AI接口的调用方法不必多介绍。官网地址人流量统计新建AipBodyAnalysisfrom aip import AipBodyAnal
- 字符串Go语言中的字符串以原生数据类型出现。 Go 语言里的字符串的内部实现使用UTF-8编码。 字符串的值为双引号(")中的内容
- 一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点:1、不开源,价格贵2、软件容量大。一般3G以上,高版本甚
- 一、状态介绍在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于 * 作系统的调度算法控制,程序会进入几个状态:就绪,运
- 今天给vscode配置git的时候,差点没把我送走,我在配置git项目的时候会,看了一个博客文章的教学,其中配置路径的方法如下1. 在git
- 一、介绍Django特点:具有完整的封装,开发者可以高效率的开发项目,Django将大部分的功能进行了封装,开发者只需要调用即可,如此,大大
- MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是100条调节和优化M
- 本文实例为大家分享了Vue实现web分页组件的具体代码,供大家参考,具体内容如下效果演示源代码<!DOCTYPE html>&l
- 一、为何使用Tkinter而非PyQt众所周知,在Python中创建图形界面程序有很多种的选择,其中PyQt和wxPython都是很热门的模
- 学习前言在前一段时间已经完成了卷积神经网络的复习,现在要对循环神经网络的结构进行更深层次的明确。RNN简介RNN 是当前发展非常火热的神经网
- 创建临时表,往临时表插入数据的时候报的错误。一开始提示没有打开主键,后来打开主键就提示上述错误异常。从网上查找资料没有找到,然后又到群里问各
- GO 语言的 for…range 能做什么呢?for…range 如何使用 ?for…range 的返回