我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python学习之日志模块详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python学习之日志模块详解

OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日志模块中的那些内容吧。

日志的作用

说到日志,我们完全可以想象为现实生活中的日记。日记是我们平时记录我们生活中点点滴滴的一种方法,而日志我们可以认为是 程序的日记 ,程序的日记是用来记录程序的行为,一般来说我们可以通过日志记录一些程序的重要信息。

比如哪里报错了?报错原因是什么?这个时候我们就可以通过查看日志知道哪里出了什么错误,并且是什么原因造成的,这样就可以帮助我们快速查错并修复bug。

其实并不仅仅是错误的信息,我们还可以通过日志记录程序运行的状态。

日志的等级

既然明确了日志的作用,在平时的日志记录过程中我们可以根据自己不同的业务需要进行不同等级的日志的记录。

debug:可以帮助我们在平时的开发过程中,帮助我们查看一些输出的信息是否正确。它可以替代我们平时使用的 print() 函数。

info:它代表了一般的消息类信息,只是为了记录一些程序的行为,比如程序执行到了某个位置,进行一些简单的记录。

warnning:该等级是一种警告,一般来说程序不会出错,但是可能存在一定的潜在风险。

error:一般对应业务中出现了重大问题。比如异常或者业务逻辑不应该执行到某种情况。我们都可以通过error来进行记录。

critical:比 error 更严重的级别,不过一般来说 error 级别已经很严重了,所以 critical 很少使用。

logging 模块的使用

其实 logging 模块使用起来还是比较复杂的,不过我们初学乍道,只需要学习使用 logging.basicConfig 就可以满足我们最基本的日志记录功能。

接下来我们看一下 logging.basicConfig 需要传入哪些参数以及如何使用。

参数名作用举例
lever日志输出的最低等级lever=logging.DEBUG
format日志输出格式见下文的 format 具体格式
filename存储位置filename=‘d://debug.log’
filemode输入模式filemode=“w”

关于 lever ,lerver的作用是表示最低的日志等级记录。如上文中的 lever=logging.DEBUG ,就表示记录包含 DEBUG 级别在内的所有日志等级。

format具体格式如下:

格式符含义
%(levername)s日志级别名称
%(pathname)s当前执行程序的路径(即脚本所在的位置)
%(filename)s执行脚本程序名
%(lineno)d日志当前的行号
%(asctime)s打印日志的时间
%(message)s日志信息

常用的日志 fromat 常用方案:fromat = '%(asctime)s %(filename)s[line:%(lineno)d] %(levername)s %(message)s'

logging 模块演示小案例

import logging


logging.basicConfig(        # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用)
    level=logging.INFO,     # INFO 等级以下的日志不会被记录
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',    # 日志输出格式
    filename='back.log',    # 日志存放路径(存放在当前相对路径)
    filemode='w',           # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式
                            # 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件
)


logging.debug('这是一条 debug 信息')
logging.info('这是一条 日志记录 信息')
logging.warning('这是一条 警告 信息')
logging.error('这是一条 重大的错误 信息')

# >>> 执行结果如下图

上面我们使用的 filemode 模式是 'w' 模式,现在我们改为 'a' 模式,尝试将日志追加进入 back.log 文件。

import logging


logging.basicConfig(        # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用)
    level=logging.INFO,     # INFO 等级以下的日志不会被记录
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',    # 日志输出格式
    filename='back.log',    # 日志存放路径(存放在当前相对路径)
    filemode='a',           # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式
                            # 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件
)


logging.debug('这是一条 debug 信息 ---> \'a\' 模式第二次写入')
logging.info('这是一条 日志记录 信息 ---> \'a\' 模式第二次写入')
logging.warning('这是一条 警告 信息 ---> \'a\' 模式第二次写入')
logging.error('这是一条 重大的错误 信息 ---> \'a\' 模式第二次写入')

# >>> 执行结果如下图

这里关于文件是否存在,使用 ‘w’ 模式还是 ‘a’ 模式,我们完全可以通过 os 模块进行路径文件的判断,所以我们针对上文的脚本再进行优化一下。

import logging
import os

def init_log(path):
    if os.path.exists(path):
        mode = 'a'
    else:
        mode = 'w'
    logging.basicConfig(        # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用)
        level=logging.INFO,     # INFO 等级以下的日志不会被记录
        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',    # 日志输出格式
        filename='back.log',    # 日志存放路径(存放在当前相对路径)
        filemode=mode,          # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式
                                # 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件
    )

    return logging


current_path = os.getcwd()
path = os.path.join(current_path, 'back.log')

log = init_log(path)        # 初始化返回的 init_log() 函数 , 其实就是 return logging


log.debug('这是一条 debug 信息 ---> 第三次写入')
log.info('这是一条 日志记录 信息 ---> 第三次写入')
log.warning('这是一条 警告 信息 ---> 第三次写入')
log.error('这是一条 重大的错误 信息 ---> 第三次写入')

# >>> 执行结果如下图:

到此这篇关于Python学习之日志模块详解的文章就介绍到这了,更多相关Python日志模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python学习之日志模块详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 日志模块logging学习

在日常项目中,总是需要记录下一些细小信息或者错误码、错误信息的,这个时候就需要进行日志的操作。python中用于日志创建、设置和记录等功能的模块,就是logging了,下面是对其基本使用方法的介绍:一、最最简单的使用方法:import lo
2023-01-31

Python模块学习之IPy模块

IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第三
2023-01-31

Python学习之configparser模块的使用详解

ConfigParser是用来读取配置文件的包。这篇文章主要通过一些简单的实例带大家了解一下ConfigParser模块的具体使用,感兴趣的小伙伴跟随小编一起了解一下
2023-01-28

python logging日志模块的详解

python logging日志模块的详解 日志级别日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL。 DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 W
2022-06-04

python学习之argparse模块

一、简介:argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数,例如 python parseTest.py input.txt outpu
2023-01-31

Python学习之PyYaml模块

我需要解析twemproxy的配置文件中的pool和后端的redis主机。采用shell解析yml文件太麻烦,正好python有正对于yaml文件解析的pyyaml模块例如twemporxy的配置文件nutcracker.yamlalpha
2023-01-31

python模块之paramiko学习<

简介:paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。安装所需软件包:http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto
2023-01-31

Python学习之MySQLdb模块

CentOS下安装sudo yum install MySQL-python可以参考http://www.mikusa.com/python-mysql-docs/index.html  获取更多信息MySQL-python 为Python
2023-01-31

python之web模块学习-- url

下面继续学习python的web模块 ---  urllib2,一个源于urllib又高于urllib的模块。1  urllib2 简介    urllib2是python自带的一个访问网页及本地文件的库。    与urllib相比,显著区
2023-01-31

python之web模块学习-- htt

1  httplib简介httplib 是python中http协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互    httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第
2023-01-31

python之强大的日志模块

作者:txw1958 | 出处:博客园 | 2011/10/21 19:41:55 | 阅读43次1.简单的将日志打印到屏幕 import logginglogging.debug('This is debug message')loggi
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录