一、日志

1.1什么是日志

日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性。

1.2何时使用日志

logging模块提供了一些函数,用来做一些简单的日志,他们是debug()、info()、warning()、error()、critical()。要决定什么时候使用logging,见下表,描述了常见的任务及对应的最佳工具。

你想完成的任务 完成任务的最佳工具
在控制台上显示命令行脚本或者程序的常规用法说明 print()
报告在程序的正常操作期间发生的事件(例如,用于状态监视或故障调查) logging.info() (或者 logging.debug() ,非常详细的输出,用于诊断目的)
对于特定的运行时事件发出警告

在库代码中使用warnings.warn() ,表明问题是可以避免的,且客户应用应该修改代码以消除警告

使用logging.warning() 表示客户应用对此问题无能为力,但是还是应该注意该事件。

对于特定的运行时事件报告错误 抛出异常
报告错误的抑制而不引发异常(例如,在长时间运行的服务器进程中的错误处理程序) 根据特定的错误和应用领域,使用合适的logging.error()、 logging.exception() 或者logging.critical()
1.3事件严重性(事件的级别)
级别 何时使用
DEBUG 详细信息,一般只在调试问题时使用。
INFO 证明事情按预期工作。
WARNING 某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。
ERROR 由于更严重的问题,软件已不能执行一些功能了。
CRITICAL 严重错误,表明软件已不能继续运行了。

默认等级时warning。意味着只有warning以上的事件等级才会反馈信息,可以通过logging.setLevel()修改默认等级。

二、Logging简介

logging模块定义的类和函数位应用程序和库实现了一个灵活的事件日志系统。由标准库提供的日志记录API的好处是所有的Python模块都可以使用日志。

2.1使用logging记录到控制台

#1.使用logging 将日志打印到控制台
logging.basicConfig(level=logging.DEBUG) #默认level时warning。所以需要修改一下级别
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

2.2使用logging将日志记录到文件

#2.将日志记录到文件
logging.basicConfig(filename='logging.log',filemode='a',level=logging.DEBUG) #默认level时warning。所以需要修改一下级别
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

2.3 如果程序由多个模块,组织日志

# myapp.py
import logging
import mylibdef main():logging.basicConfig(filename='myapp.log', level=logging.INFO)logging.info('Started') mylib.do_something()  logging.info('Finished') if __name__ == '__main__':main()

三、改变显示消息格式Formatter

logger对象一般不会直接实例化得到,而是通过模块级别的logging.getLogger()得到。以相同的名字多次调用getLogger()。永远返回相同的logger对象的引用-->单例模式。

3.1 format 指定输出格式和内容

import logging
logging.basicConfig(format='%(levelname)s:%(message)s',level=logging.DEBUG)
logging.debug('debug msg')
logging.info('info msg')
logging.warning('warning msg')
logging.error('error msg')
logging.critical('critical msg')

常用的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: 打印日志信息

format

import os
#format
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s:%(filename)s [line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S',filename= os.path.join('format.txt'),filemode='w',)
logging.debug('debug msg')
logging.error('error msg')

四、Logger

Logger对象有三个作用,首先,它暴露给应用几个方法以便应用可以在运行时写log;其次,Logger对象按照log信息的严重程度或者根据filter对象来决定如何处理log信息(默认的过滤功能);最后,logger还负责把log信息传送给相关的loghandlers。

4.1将日志记录控制台及文件

import logginglogger = logging.getLogger()
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log',encoding='utf-8') # 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setLevel(logging.DEBUG)fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh) #logger对象可以添加多个fh和ch对象
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库提供了多个组件:Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。另外,可以通过:logger.setLevel(logging.Debug)设置级别,当然,也可以通过

fh.setLevel(logging.Debug)单对文件流设置某个级别。

转载于:https://www.cnblogs.com/weihengblog/p/8568283.html

Python的日志记录-logging模块的使用相关推荐

  1. python日志模块 限制日志记录数_python日志记录-logging模块

    1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a ...

  2. pycharm console日志如何输出到txt_日志记录——logging模块

    Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等. log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > ...

  3. python日志:logging模块使用

    # python日志:logging模块使用 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等, 记录运行时的过程 ## 日志 ...

  4. Logging——Python 的日志记录工具

    Logging--Python 的日志记录工具 1.定义 2.简单使用 3.简单配置 3.1 日志级别 3.2 简单配置 4.基础类和函数 4.1 Logger记录器 4.2 Handler 处理器 ...

  5. python实训日志_Logbook:Python 快速日志记录实践

    原标题:Logbook:Python 快速日志记录实践 作者:东东 yasking

  6. python中的logging记录日志_[ Python入门教程 ] Python中日志记录模块logging使用实例...

    python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...

  7. python 输出log_python:logging模块(记录打印日志)

    logging.basicConfig(**kwargs):创建默认处理器从而将调试消息写至文件,它接受一个字典 filename:指定文件名,把记录输出定向的文件里面,如果不指定文件名就会直接打印到 ...

  8. 优雅地记录Python程序日志2:模块组件化日志记录器

    本文摘自:https://zhuanlan.zhihu.com/p/32043593 本篇将会涉及: logging的各个模块化组件 构建一个组件化的日志器 logging的模块组件化 在上一篇文章中 ...

  9. Python模块:日志输出—logging模块

    1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/ ...

最新文章

  1. CentOS安装编译环境
  2. eclipse中动态web项目快捷方式设置
  3. 构建DHCP及中继服务器
  4. python自定义线程
  5. Tomcat的Classpath-常见问题以及如何解决
  6. gitlab mysql 表_gitlab-mysql_高可用
  7. 火车票售票系统mysql_为何火车上明明有很多空位,售票系统却会显示无座?
  8. springboot工程中使用spring.version导致无法启动
  9. 纯css3制作的几个社交媒体网站的图标
  10. C#颜色和名称样式对照表
  11. c语言剪枝函数,[求助]关于剪枝算法
  12. linuxliveu盘怎么用_linux mint 12 U盘(live usb)安装及体验
  13. CTP: 为什么报网络原因发送失败,但连接却成功?
  14. Fedora 33 配置Samba 服务器
  15. chtagpt使用指南
  16. 关于10G/40G/100G数据中心光纤布线知识
  17. html5 便签墙,自己制作画毡墙
  18. 【转载】Amit’s A star Page 中译文
  19. android 自己写挂电话,MTK Android 如何自动挂断电话
  20. Java高级工程师进阶学习,快来收藏!

热门文章

  1. 计算机控制课程设计体会,计算机控制技术课程设计报告
  2. 舞伴配对问题java_舞伴配对问题
  3. webpack打包后引用cdn的js_利用CDN加速react webpack打包后的文件详解
  4. java long类型转string_JavaSE的学习——数据类型
  5. c语言读入文件排序,帮忙-如何对文件排序啊
  6. mysql去重DISTINCT
  7. 分布式理论CAP定理
  8. java怎么表示正无穷大_有什么比无穷大更大,比无穷小更小?
  9. 数据库:SQL 语法速成手册,建议新手收藏!
  10. Java 类在 Tomcat 中是如何加载的?