一、必备技能

1、logging模块的使用

(1)5个日志等级/以及5个输出日志的内置函数

(2)日志收集器、日志输出渠道的概念

(3)如何自定义日志收集器

(4)如何封装自定义的日志收集器

二、logging

python的官方库,打印日志用的,无需安装,使用时直接调用

1、logging的基本使用

1.1、日志的五个等级(DEBUG/INFO/WARNING/ERROR/CRITICAL)

(1)DEBUG:调试模式下的日志,只给程序员看的日志

(2)INFO:程序正常运行的时候输出的日志

(3)WARN/WARNING:警告信息,当前程序还可以运行,后面有可能出现问题

(4)ERROR:程序执行过程总的错误信息

(5)CRITICAL:发生严重错误,阻塞流程,程序可能无法继续运行

1.2、打印不同日志等级的方法:

(1)logging.debug("调试日志信息")

(2)logging.info("重要日志信息")

(3)logging.warning("警告日志信息")

(4)logging.error("错误日志信息")

(5)logging.critical("致命日志信息")

1.3、日志收集器和日志输出渠道:

日志收集器:

默认收集器的名字为root,默认收集等级为WARNING,通过如下步骤设置收集器的等级

log = logging.getLogger() # 获取日志收集器,默认为root

log.setLevel("等级")  # 等级必须大写

logging.basicConfig(level=logging.DEBUG)  # 设置收集器的等级

日志输出渠道:

默认输出等级为WARNING

输出渠道支持:输出到文件夹和输出到控制台

Demo实例1——默认WARNING等级

import logging
# 打印不同等级的日志(debug、info、warning、error、critical)
# 如下5条日志,只会打印WARNING等级以后的日志
logging.debug("这是一条debug级别的日志")
logging.info("这是一条info级别的日志")
logging.warning("这是一条warning级别的日志")
logging.error("这是一条error级别的日志")
logging.critical("这是一条critical级别的日志")

运行结果 :(只会打印WARNING级别以上的日志)

WARNING:root:这是一条warning级别的日志
ERROR:root:这是一条error级别的日志
CRITICAL:root:这是一条critical级别的日志

Demo实例2——默认的日志收集器

import logging
# # logging.basicConfig(level=logging.DEBUG) 设置日志级别
# 未指定name,默认返回自带的默认的root收集器
# 默认输出WARN级别以上的等级日志
# 如果设置了WARNING以下的等级,则输出WARNING等级以上的日志
# 如果设置了WARNING以上的等级,比如设置了ERROR,则输出ERROR等级以上的日志
log = logging.getLogger()
# log.setLevel("DEBUG")
# log.setLevel("INFO")
# log.setLevel("WARNING")
log.setLevel("ERROR")
# log.setLevel("CRITICAL")logging.debug("这是一条debug级别的日志")
logging.info("这是一条info级别的日志")
logging.warning("这是一条warning级别的日志")
logging.error("这是一条error级别的日志")
logging.critical("这是一条critical级别的日志")

 运行结果:

ERROR:root:这是一条error级别的日志
CRITICAL:root:这是一条critical级别的日志

2、自定义日志收集器

2.1、创建日志收集器

log = logging.getLogger(name="rose_logger")

不传name参数时,默认返回收集器名字为“root”

传了name参数时,会创建一个新的日志收集器

2.2、创建日志收集渠道

(1)输出到控制台:

pycharm = logging.StreamHandler()

(2)输出到文件:    

file = logging.FileHandler(os.getcwd()+r"\rose.log",encoding="utf-8")

file=handlers.TimedRotatingFileHandler(filename="test.log",when="D",interval=1,backupCount=10,encoding="utf-8")

        注意点(参数):

filename, 日志的文件名称(包含路径)

when= 'h', 日志的切割单位

# S - Seconds 秒

# M - Minutes 分钟

# H - Hours 小时

# D - Days 天(24小时)

# midnight - roll over at midnight 日切

# W{0-6} - roll over on a certain day; 0 - Monday 周

interval=1, 滚动周期,与when='h'连动,1-表示以时间为周期

backupCount=0 保留日志文件的个数,设置为10,永远只保存最近的10个文件

2.3、创建日志的输出格式

(1)创建日志格式对象

pycharm_fmt = logging.Formatter(fmt=fmt1)

(2)将日志输出格式绑定到日志输出渠道

pycharm.setFormatter(fmt=pycharm_fmt)  ——设置到控制台日志渠道

file.setFormatter(fmt=pycharm_fmt1)——设置到文件日志渠道

(3)常用的格式模板(也可以自己定义)

fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"

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

(4)格式必须按照指定的格式格式化。常用的如下:

%(asctime)s——当前时间

%(funcName)s——模块名

%(lineno)d——行号

%(levelname)s——日志等级名称

%(message)s——具体的日志内容

   Demo实例3——自定义日志收集器和日志格式

import logging,os
from logging import handlers
# 1、创建日志收集器
log = logging.getLogger(name="rose_logger")# 2、创建日志收集渠道
# 输出控制台
pycharm = logging.StreamHandler()
# 输出文件夹
file = logging.FileHandler(os.getcwd()+r"\rose.log",encoding="utf-8")
# file = handlers.TimedRotatingFileHandler(filename="test.log",when="D",interval=1,backupCount=10,encoding="utf-8")# 3、创建日志的输出格式
fmt1 = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"
# 创建一个日志输出对象
pycharm_fmt = logging.Formatter(fmt=fmt1)
fmt2 = '[%(asctime)s-%(name)s-%(levelname)s-%(filename)s-%(lineno)d]:%(message)s'
pycharm_fmt1 = logging.Formatter(fmt=fmt2)# 4、日志输出格式绑定到日志输出渠道
pycharm.setFormatter(fmt=pycharm_fmt)
file.setFormatter(fmt=pycharm_fmt1)# 5、直接给收集器设置日志级别就可以了,渠道会继承收集器的日志级别
log.setLevel(level=logging.DEBUG)
# 5、给收集渠道设置日志级别,文件渠道,控制台输出的级别不会一样
# pycharm.setLevel(logging.DEBUG)# 6、将日志收集渠道绑定到日志收集器
log.addHandler(pycharm)
log.addHandler(file)log.info(msg="测试")

输出结果:

    Demo实例4——封装自定义日志收集器

import logging
from logging import handlers
def create_log(name,level,filename,sh_level,fh_level):""":param name:  日志收集器名字:param level: 日志收集器的等级:param filename:  日志文件的名称:param sh_level:  控制台输出日志的等级:param fh_level:    文件输出日志的等级:return: 返回创建好的日志收集器"""# 1、创建日志收集器log = logging.getLogger(name)# 2、创建日志收集器的等级log.setLevel(level=level)# 3、创建日志收集渠道和等级sh = logging.StreamHandler()sh.setLevel(level=sh_level)log.addHandler(sh)fh = logging.FileHandler(filename=filename,encoding="utf-8")# fh1 = handlers.TimedRotatingFileHandler(filename=filename,when="D",interval=1,backupCount=10,encoding="utf-8")fh.setLevel(level=fh_level)log.addHandler(fh)# 4、设置日志的输出格式formats = "%(asctime)s - [%(funcName)s-->line:%(lineno)d] - %(levelname)s:%(message)s"log_format = logging.Formatter(fmt=formats)sh.setFormatter(log_format)fh.setFormatter(log_format)return logif __name__ == '__main__':log = create_log(name="rose_log",level=logging.DEBUG,filename="test_log.log",sh_level=logging.DEBUG,fh_level=logging.DEBUG)log.info(msg="--------debug--------")log.info(msg="--------info--------")log.info(msg="--------warning--------")log.info(msg="--------error--------")log.info(msg="--------critical--------")

输出结果:

python打印日志方法的使用相关推荐

  1. Pytest-html生成独立的报告以及Python打印日志

    大家好,我是杨叔.每天进步一点点,关注我的微信公众号[程序员杨叔],获取更多测试开发技术知识! 一.Pytest-html生成独立的报告 背景: 使用pytest运行case后,需要生成一个HTML报 ...

  2. python打印日志(控制台内容输出)

    你是否遇到过这样几个问题: 1.获取控制台打印的内容,并且想要保存下来 2.代码本来运行的好好的,但是由于新增内容,出现bug,加入了异常处理(try...),把不满足条件的先过滤掉.这时需要查看过滤 ...

  3. python打印日志logbook

    1. 自定义输入日志格式 log.py import os import sys import logbook from logbook import Logger,StreamHandler,Fil ...

  4. python打印日志

    https://www.cnblogs.com/nancyzhu/p/8551506.html

  5. python打印不同颜色的字_Python 根据日志级别打印不同颜色的日志的方法示例

    本文介绍了Python 根据日志级别打印不同颜色的日志的方法示例,分享给大家,具体如下: # -*-coding:UTF-8-*- import logging import os import ti ...

  6. python log日志_Python的log日志功能及设置方法

    引入:Python中有个logging模块可以完成相关信息的记录,在debug时用它往往事半功倍 一.日志级别(从低到高): DEBUG :详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期 ...

  7. 解决多个py模块调用同一个python的logging模块,打印日志冲突问题

    前期对python中的logging模块进行了封装,这样自动化测试框架中的多个测试脚本(py)就可以使用同一个封装后的日志系统,这样各脚本中只需要引用一下即可,方面快捷.那么当我使用unittest框 ...

  8. python 打印模块_Python 日志打印模块

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  9. Android真机调试打印日志的方法

    使用模拟器效率是很低的,所以真机调试是多数开发者的选择.使用模拟器调试程序和使用真机调试程序还是有一些不同的.比如,某些手机在调试过程中,不会打印日志出来. 真机调试不输出日志到logcat的原因是手 ...

最新文章

  1. html表单的常用属性有哪些,整理HTML5中表单的常用属性及新属性
  2. 关于bash的执行过程
  3. C语言指针数组和数组指针
  4. QT在windows平台安装使用MInGW编译
  5. 论记笔记的重要性:以三个电影为例
  6. Netty:另一种Web(套接字)服务器
  7. 怎样解决Word文档图标无法正常显示的问题?
  8. Linux程序包管理2
  9. Firewald 防火墙使用手册
  10. 运营前线2:一线运营专家的运营方法、技巧与实践03 3步策略做好内容管理
  11. 数据之路 - Python爬虫 - 正则表达式
  12. 面经-hangzhou
  13. 【第一组】第四次冲刺例会纪要
  14. 浅尝springboot
  15. Anaconda 安装及验证是否安装成功
  16. python opencv入门 Meanshift 和 Camshift 算法(40)
  17. php+mysql 留言板系统 登录 管理员 审核回复 学生适用
  18. 组态王下拉式组合框使用教程,组态王下拉式组合框
  19. 微型计算机原理中的mov,微机原理考试题目类型
  20. HR面试题(史上最全、持续更新、吐血推荐)

热门文章

  1. 戰女神V、ef_latter、BaldrSky 注册表补丁
  2. django arya插件对数据库操作使用,reverse发娘解析url的使用
  3. 项目经验--听讲座有感
  4. 基于W5500的实时远程温湿度监控系统
  5. 【 Arduino 和水流量传感器测量水流量和体积】
  6. VB.NET中的回车换行
  7. 更改linux文件/目录的权限、拥有者及用户组
  8. 江苏单招C语言试题,江苏对口单招考试大纲-计算机类专业综合理论
  9. hppt加密 java代码_Http Sampler扩展(加密处理)
  10. [点点搬家]与Perl厮混后感觉嘚儿嘚儿的