【Python】python logging模块打印log到指定文件

2023-11-19

可能我们经常会使用print来输出信息到窗口,但当我们有很多个py文件需要运行,项目比

 

较庞大的到时候,print简直就是太low了点了。那么我们可以使用强大的logging模块,把

 

输出到指定的本地pc某个路径的文件中。

 

一、logging的框架

1、 Loggers: 可供程序直接调用的接口,app通过调用提供的api来记录日志

2、 Handlers: 决定将日志记录分配至正确的目的地

3、 Filters:对日志信息进行过滤,提供更细粒度的日志是否输出的判断

4、 Formatters: 制定最终记录打印的格式布局

 

二、Log级别

系统默认有6个级别,优先级:

CRITICAL    50

ERROR      40

WARNING   30

INFO        20

DEBUG      10

NOTSET     0

 

设置要打印的log时只需要设置优先级,比如设置打印INFO,那么比INFO优先级高的WARNING/ERROR/CRITICAL都将被打印。

三、正常的打印

 

这里只输出了ERROR和WARNING的信息,是因为logging默认的输出级别是WARNING。

四、输出到指定文件

来看看这样写的代码:

import logging
import unittest
class lgtest(unittest.TestCase):
    
logging.basicConfig(filename='../LOG/'+__name__+'.log',format='[%(asctime)s-%(filename)s-%(levelname)s:%(message)s]'level logging.DEBUG,filemode='a',datefmt='%Y-%m-%d%I:%M:%S %p')

    
def test(self):

        
logging.error("这是一条error信息的打印")
        logging.info(
"这是一条info信息的打印")
        logging.warning(
"这是一条warn信息的打印")
        logging.debug(
"这是一条debug信息的打印")
if __name__=='__main__':
    
unittest.main()

使用logging.basicConfig来指定要输出的文件以及log的输出形式、包括时间格式、日志级别等等。


Filename:指定路径的文件。这里使用了+—name—+是将log命名为当前py的文件名

Format:设置log的显示格式(即在文档中看到的格式)。分别是时间+当前文件名+log输出级别+输出的信息

Level:输出的log级别,优先级比设置的级别低的将不会被输出保存到log文档中

Filemode: log打开模式

a:代表每次运行程序都继续写log。即不覆盖之前保存的log信息。

w:代表每次运行程序都重新写log。即覆盖之前保存的log信息

 

五、最终的log文档

文件名与py文件名相同,因为basicConfig里面使用了__name__来获取的。

 

我们来看看内容,这是运行了两次py文件的内容:

[2018-02-1002:29:57 PM-Logout.py-ERROR:这是一条error信息的打印]

[2018-02-1002:29:57 PM-Logout.py-INFO:这是一条info信息的打印]

[2018-02-1002:29:57 PM-Logout.py-WARNING:这是一条warn信息的打印]

[2018-02-1002:29:57 PM-Logout.py-DEBUG:这是一条debug信息的打印]

[2018-02-1002:39:32 PM-Logout.py-ERROR:这是一条error信息的打印]

[2018-02-1002:39:32 PM-Logout.py-INFO:这是一条info信息的打印]

[2018-02-1002:39:32 PM-Logout.py-WARNING:这是一条warn信息的打印]

[2018-02-1002:39:32 PM-Logout.py-DEBUG:这是一条debug信息的打印]

 

 运行一次会有4个信息打印出来,因为filemode设置成了a,所以再次运行时不会覆盖

 

之前的log信息,就有8条信息了。

Ok,log输出到文档就这么简单。当然大家如果弄熟了可以自己写记录器、过滤器等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python】python logging模块打印log到指定文件 的相关文章

随机推荐

  • 爬虫小白也能玩转!Python爬虫中的异常处理与网络请求优化

    大家好 我是来自爬虫世界的小编 今天 我要和大家分享一些关于Python爬虫中的异常处理和网络请求优化的经验 不论你是初学者还是有一定经验的爬虫程序员 我相信这些实用的技巧和代码示例都能为你在爬取数据的过程中带来方便和效率 1 异常处理 保
  • MySQL查看、创建和删除索引的方法分享

    这篇文章主要介绍了MySQL查看 创建和删除索引的方法 结合实例形式较为详细的分析了MySQL中索引的作用 以及查看 创建及删除索引的相关实现技巧 具有一定参考借鉴价值 需要的朋友可以参考下 本文实例讲述了MySQL查看 创建和删除索引的方
  • STM32系统时钟超详解

    作者简介 嵌入式入坑者 与大家一起加油 希望文章能够帮助各位 个人主页 rivencode的个人主页 系列专栏 玩转STM32 保持学习 保持热爱 认真分享 一起进步 目录 一 什么是时钟 二 时钟树 1 HSE时钟 2 HSI时钟 3 L
  • Shell变量的设置规则

    1 变量设置规则 变量与变量内容以一个等号 myname LSX 等号两边不能直接接空格 myname LSX 或 myname L SX 都是错误 变量名称只能是英文字母与数字 但是开头字符不能是数字 2myname LSX 错误 2 双
  • 华为od机考真题-数据分类

    while 1 try c b nums list map int input split dp
  • C++11 新特性:模板别名

    C 11 新特性 模板别名 豆子 2012年5月22日 C 没有评论 参考文章 https blogs oracle com pcarlini entry template aliases 2002 年 ISO C 标准化组织就已经提出了模
  • Jmeter Springboot Redisson分布式锁并发订单操作(下单、取消单、完成单、加库存)

    Jmeter Springboot Redisson分布式锁并发订单操作 下单 取消单 完成单 加库存 涉及知识点 java springboot mybatis开发 redis分布式锁 Redisson客户端 Jmeter各种骚操作 用户
  • 多元线性回归&梯度下降法——多元线性回归

    多特征 当Y值的影响因素不是唯一时 采用多元线性回归模型 例子 梯度下降法 多元线性回归 import numpy as np from numpy import genfromtxt import matplotlib pyplot as
  • 时序预测

    时序预测 MATLAB实现DNN深度神经网络时间序列预测未来 多指标 多图输出 目录 时序预测 MATLAB实现DNN深度神经网络时间序列预测未来 多指标 多图输出 预测效果 基本介绍 模型结构 程序设计 学习总结 预测效果 lt
  • CentOS7.3下载,CentOS7.3 iso下载

    原网站 http man linuxde net download CentOS 7 3 当前位置 首页 CentOS CentOS7 3下载 CentOS7 3 iso下载 CentOS 7 3 是CentOS 7系列的第四个发行版本 官
  • linux设置pg库开机自启

    要在Linux系统上设置PostgreSQL数据库开机自启 可以按照以下步骤操作 打开终端并使用root权限登录系统 编辑 etc rc local 文件 sudo vi etc rc local 在文件的最后一行添加以下内容 su pos
  • Ubuntu 安装 Tensorflow-gpu 与 Keras

    为深度学习所用 博主预想在Ubuntu16 04上安装 显卡驱动 CUDA cuDNN Tensorflow gpu Keras PyCharm 参考了众多资料 最终成功将所有软件安装完毕 且能成功运行使用 该篇博客介绍了Tensorflo
  • matlab求二元函数极值算法_高等数学下册(部分)复习——知识点:多元函数微分方法及其应用...

    空间解析几何与向量代数的部分就不说了 比较简单 以几道例题练一练就差不多了 首先从第九章 多元函数微分方法及其应用说起 01 多元微分 理论 要学习多元 我们首先要从一元开始 一元的学会了 就能够类比得到多元的结论 在理论部分 首先要介绍一
  • WIN10系统MYSQL的下载与安装详细教程

    前两天ubuntu下安装mysql遇到了一些依赖问题 结果解决了半天 没解决好 还把我的系统搞坏了 小白破坏力好强 到现在我的ubuntu也没装好 电脑驱动的问题 联想小新310一装ubuntu 进去就卡 原来禁用原先的显卡驱动 可是 第二
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • ChatGPT启示录: 智能、推理的本质是什么?神经网络既是推理机,也是知识规则库?

    多种因素让人类对自身的智力产生了一种自信 毕竟这个世界上其他生物没有我们大脑发达 智力似乎是上天给人类的独有礼物 作为孩子的父母 老师说孩子不努力似乎是可以接受的 但是说自己娃娃笨是极其羞辱的 类似的 让很多人不能接受的是 机器人可以算得比
  • 学习笔记(三):Java中的List集合——ArrayList、LinkedList、Vector、Stack、CopyOnWriteArrayList

    目录 引言 一 List简介 二 常用List实现类 一 ArrayList 二 LinkedList 三 LinkedList和ArrayList的比较 三 其他List实现类 一 Vector 二 Stack 三 CopyOnWrite
  • Java安装、Java环境配置,以及我的第一个Java程序(win11)

    Java环境配置 下载OpenJDK Windows11 1 进入Oracle Java Downloads 2 下载 ZIP文件 3 解压到适合的位置 注意 路径最好是英文字母 配置环境变量 1 Win I打开系统设置 2 下拉到最底下选
  • vuejs 制作摄像头_VueJs的网络摄像头组件

    vuejs 制作摄像头 网络摄像头 vue web cam Webcam component for VueJs VueJs的网络摄像头组件 安装 Installation npm install vue web cam save yarn
  • 【Python】python logging模块打印log到指定文件

    可能我们经常会使用print来输出信息到窗口 但当我们有很多个py文件需要运行 项目比 较庞大的到时候 print简直就是太low了点了 那么我们可以使用强大的logging模块 把 输出到指定的本地pc某个路径的文件中 一 logging