Python标准模块--logging

2023-11-10

1 logging模块简介

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

  1. 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;
  2. print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出;

2 logging模块使用

2.1 基本使用

配置logging基本的设置,然后在控制台输出日志,

import logging
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

运行时,控制台输出,

2016-10-09 19:11:19,434 - __main__ - INFO - Start print log
2016-10-09 19:11:19,434 - __main__ - WARNING - Something maybe fail.
2016-10-09 19:11:19,434 - __main__ - INFO - Finish

logging中可以选择很多消息级别,如debug、info、warning、error以及critical。通过赋予logger或者handler不同的级别,开发者就可以只输出错误信息到特定的记录文件,或者在调试时只记录调试信息。

例如,我们将logger的级别改为DEBUG,再观察一下输出结果,

logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')

控制台输出,可以发现,输出了debug的信息。

2016-10-09 19:12:08,289 - __main__ - INFO - Start print log
2016-10-09 19:12:08,289 - __main__ - DEBUG - Do something
2016-10-09 19:12:08,289 - __main__ - WARNING - Something maybe fail.
2016-10-09 19:12:08,289 - __main__ - INFO - Finish

logging.basicConfig函数各参数:

filename:指定日志文件名;

filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a';

format:指定输出的格式和内容,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:打印日志信息

datefmt:指定时间格式,同time.strftime();

level:设置日志级别,默认为logging.WARNNING;

stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;

2.2 将日志写入到文件

2.2.1 将日志写入到文件

设置logging,创建一个FileHandler,并对输出消息的格式进行设置,将其添加到logger,然后将日志写入到指定的文件中,

import logging
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

log.txt中日志数据为,

2016-10-09 19:01:13,263 - __main__ - INFO - Start print log
2016-10-09 19:01:13,263 - __main__ - 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python标准模块--logging 的相关文章

  • 如何为未捕获的异常处理程序编写单元测试

    我有一个函数可以捕获uncaught例外情况 如下 有没有办法编写一个单元测试来执行uncaught exception handler 功能正常 但测试正常退出 import logging def config logger logge
  • 如何调整 matplotlib 单选按钮的大小和纵横比?

    我已经尝试了几个小时来使简单的单选按钮列表的大小和纵横比正确 但没有成功 首先 导入模块 import matplotlib pyplot as plt from matplotlib widgets import RadioButtons
  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • python array(10,1) 和 array(10,) 之间的区别

    我正在尝试将 MNIST 数据集加载到数组中 当我使用 X train y train X test y test mnist load data 我得到一个数组 y test 10000 但我希望它的形状为 10000 1 数组 1000
  • OpenCV 跟踪器:模型未在函数 init 中初始化

    在视频的第一帧 我运行一个对象检测器 它返回对象的边界框 如下所示
  • 如何使用 Homebrew 在 Mac 上安装 Python 2 和 3?

    我需要能够在 Python 2 和 3 之间来回切换 我如何使用 Homebrew 来做到这一点 因为我不想弄乱路径并陷入麻烦 现在我已经通过 Homebrew 安装了 2 7 我会用pyenv https github com yyuu
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • 使用标签或 href 传递 Django 数据

    我有一个包含链接的表 当单击该链接进行更多操作时 我想将一些数据传递给我的函数 my html table tbody for query in queries tr td value a href internal my func que
  • App Engine 实体到字典

    将 google app engine 实体 在 python 中 复制到字典对象的好方法是什么 我正在使用 db Expando 对象 所有属性均为扩展属性 Thanks 有一个名为foo尝试 foo dict
  • 如何在 Seaborn 中的热图轴上表达类

    我使用 Seaborn 创建了一个非常简单的热图 显示相似性方阵 这是我使用的一行代码 sns heatmap sim mat linewidths 0 square True robust True sns plt show 这是我得到的
  • Python守护进程:保持日志记录

    我有一个将一些数据记录到磁盘的脚本 logging basicConfig filename davis debug log level logging DEBUG logging basicConfig filename davis er
  • 使用 selenium 和 python 来提取 javascript 生成的 HTML?萤火虫?

    这里是Python新手 我遇到的是数据收集问题 我在这个网站上 当我用 Firebug 检查我想要的元素时 它显示了包含我需要的信息的源 然而常规源代码 没有 Firebug 不会给我这个信息 这意味着我也无法通过正常的 selenium
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col
  • 描述符“join”需要“unicode”对象,但收到“str”

    代码改编自here http wiki geany org howtos convert camelcase from foo bar to Foo Bar def lower case underscore to camel case s
  • 使用 paramiko 运行 Sudo 命令

    我正在尝试执行sudo使用 python paramiko 在远程计算机上运行命令 我尝试了这段代码 import paramiko ssh paramiko SSHClient ssh set missing host key polic

随机推荐

  • 【计算机网络】湖科大微课堂笔记 p2-p3 因特网概述、三种交换方式

    视频 计算机网络已从通信基础设施发展成重要的信息服务基础设施 因特网概述 网络 互联网和因特网的概念 理解 因特网发展的三个阶段 了解 因特网的标准化工作 了解 因特网的组成 理解 网络 互联网和因特网的概念 理解 左图是网络 右图是互联网
  • 转:《C++ Templates》读书笔记

    有三种模板参数 形参 1 类型参数 这是使用得最多的 2 非类型参数 3 模板的模板参数 类型参数 类型参数是通过关键字typename或者class引入 关键字后面必须是一个简单的标识符 后面用逗号来隔开下一个参数声明 等号代表接下来的是
  • U盘病毒 hypertrm.exe 修复

    1 最近电脑中了这种病毒 没有直观的感觉 不会蓝屏 也不会有其他任何异样 恶心的是他在我每次插入U盘的时候会提示INF默认安装 我没有对病毒样本做分析 感觉他只是创建了系统钩子 导致我尽管杀掉了u盘里所有的病毒 再次插上一切还会重来 2 解
  • String转字节数组

    Java语言中字符串类型和字节数组类型相互之间的转换是经常发生的 网上的分析以及代码也比较多 本文将分析分析常规的byte 和String之间的转换 1 String转byte 就是调用String类的getBytes 方法 如果没有带参数
  • 企业微信中授权小程序

    授权的时候先判断当前小程序运行环境 使用企业微信专有接口wx getSystemInfo if res environment wxwork 企业微信环境 wx qy login 获取企业微信派发的临时登录凭证 success res gt
  • PCL 计算点云的主曲率

    目录 一 算法原理 1 算法源码 2 特别提醒 3 曲率显示 二 代码实现 三 结果展示 四 测试数据 一 算法原理 1 算法源码 template
  • 用消息队列实现AB进程随时通信,在共享内存中循环逆置打印字符串

    一 要求实现AB进程随时对话 A进程发送一句话给B进程 B进程接收后打印 B进程回复一句话给A进程 A进程接收后打印 随机重复1 2步骤 当收到quit后 要结束AB进程 A进程 include
  • Python 爬取高校历年分数线

    最近一周一直在帮家里小弟看高考志愿 所以更新的没那么频繁了 请大家见谅 在看各高校的往年分数时 忍不住手痒 想着能不能给它爬下来 哈哈 说干就干 1 流程分析 之前无意中在这个网站发现有各个高校的历年录取分数线 https gkcx eol
  • 绕过过滤的空白字符

  • R语言-用stringr包处理字符串

    1 字符数统计和字符翻译 1 1 nchar和length nchar这个函数简单 统计向量中每个元素的字符个数 注意这个函数和length函数的差别 nchar是向量元素的字符个数 而length是向量长度 向量元素的个数 x lt c
  • python如何将多个文件夹的PNG图片批量转换为jpg图片(无损转换)

    一般不需要后期处理分析的照片无需使用PNG格式 对于普通的风景人物的照片可以无损转换为jpg格式 这个过程只是将原图png格式中保存空白信息的多余通道去掉而已 并不会影响画质 而内存一般可以变为原来的四分之一 对于图片收藏爱好者来说 可以节
  • ES2015数组扩展 - Array.from()

    Array from方法用于把两类对象转为真正的数组 类似数组的对象 array like object 和可遍历 iterable 的对象 包括ES6新增的数据结构Set和Map 下面是一个类似数组的对象 Array from将它转为真正
  • YOLO V6论文精读

    1 Introduction 在论文中 作者通过实证观察了几个促使我们重新提供YOLO框架的重要因素 1 从RepVGG 3 中重新参数化是一种优越的技术 在检测中尚未得到很好的利用 我们还注意到 对RepVGG块进行简单的模型缩放变得不切
  • 开发启动rsync服务的脚本

    rsync服务的重要性不言而喻 但是一般我们都是rsync daemon启动 我们可以启动rsync服务在init d目录下呢 只要我们写个脚本就OK了 root zyj cat etc init d rsyncd bin bash cre
  • 为金融而生的区块链Injective(INJ)

    Injective背景 Injective 是 Binance Labs 2018 年第一期孵化的八个项目之一 已经获得了众多机构的支持 包括全球顶尖的加密货币风险投资公司之一 Pantera Capital Injective 的核心团队
  • 【蓝桥杯学习笔记】2. 最大公约数和最小公倍数

    系列文章目录 蓝桥杯学习笔记 1 入门基本语法及练习题 文章目录 系列文章目录 前言 一 最大公约数 二 最小公倍数 总结 前言 蓝桥本笔记 从入门到放弃 本片文章使用Python语言编写 Now is better than never
  • openEuler软件包加固项目笔记

    项目概要 使用mugen框架对openEuler操作系统的软件包rubygem bacon进行测试 记录issue 涉及到一些保密性 我有些东西不便细述 因此设置了查看权限 一 申请云服务器 openEuler操作系统安装 说明 安装ope
  • Vue React实现Anchor锚点组件

    Vue实现 使用 页面引入 import Anchor from components common Anchor
  • 对于C++中的extern关键字用法的理解

    今天在学习Effective C 时遇到了extern 关键字 这个关键字我不熟悉 因此参考csdn上一位大佬的博客 总结出如下笔记 一 首先 明确一点 即 extern是关于声明的关键字 变量的声明有两种情况 1 一种是需要建立存储空间的
  • Python标准模块--logging

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