Python_Logging日志模块(一)

2023-11-12

一,日志的作用

        展现当前程序的活动情况,记录程序的运行轨迹,规范稳定的日志可以帮助开发者迅速定位程序的问题.

二,日志的内容

        正常情况下,一条完整的日志应该包含调用日志的时间戳,数字形式的日志级别,调用日志的实例化函数的路径,线程名,抛出的活动信息。

三,日志等级

日志级别名称 日志级别数值
DEBUG 10
INFO 20
WARNING 30
ERROR 40
CRITICAL 50

四,Formatter中常用的格式化信息

参数 作用
%(levelno)s 日志级别的数值
%(levelname)s 日志级别的名称
%(pathname)s 当前执行程序的路径
%(filename)s 当前执行程序名
%(funcName)s 当前执行函数
%(lineno)d 当前执行行号
%(asctime)s 日志打印时间
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 打印进程ID
%(message)s 打印日志信息

五,基本使用

#导入loogging日志模块
import logging

#创建日志对象,默认用户为Admin
logger = logging.getLogger('Admin')

#定义处理器
ConsoleHandler = logging.StreamHandler()
FileHandler = logging.FileHandler("log/all.log")

#设置处理器输出格式
ConsoleHandler = "[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]"
FileHandler = "[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]"

#日志格式
Format_ConsoleHandler = logging.Formatter(fmt=ConsoleHandler)
Format_FileHandler = logging.Formatter(fmt=FileHandler)

#添加处理格式
ConsoleHandler .setFormatter(Format_ConsoleHandler)
FileHandler.setFormatter(Format_FileHandler)

#日志等级
ConsoleHandler.setLevel(level="WARNING")
FileHandler.setLevel(level="INFO")
logger.addHandler(ConsoleHandler)
logger.addHandler(FileHandler)

logger.debug("这是DEBUG")
logger.info("这是INFO")
logger.warning("这是warning")
logger.error("这是warning")
logger.critical("这是critical")

六,基本封装

        控制日志输出格式:

                logging.Formatter(fmt = '%(asctime)s')  日志输出日志打印时间

        控制日志输出等级:

                控制台只输出等级在WARNING以及之上的日志console_handler.setLeave('WARNING')                  日志文件只输出等级在INFO以及之上的日志file_handler.setLeave('INFO') 

        控制输出日志路径以及文件名:

                log = Logging()

                logger = log.get_log('./test.log')

import logging

class Logging():

    def __init__(self,username=None,level="DEBUG"):
        #创建日志对象
        self.log = logging.getLogger(username)
        self.log.setLevel(level)

    def ConsoleHandle(self,level="WARNING"):
        #创建控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(level)
        console_handler.setFormatter(self.get_formatter()[0])
        return console_handler

    def FileHandle(self,path,level="INFO"):
        #创建文件处理器
        file_handler = logging.FileHandler(path,encoding='gbk')
        file_handler.setLevel(level)
        file_handler.setFormatter(self.get_formatter()[1])
        return file_handler

    def get_formatter(self):
        #日志文本格式
        ConsoleHandle = logging.Formatter(fmt="[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]")
        FileHandle = logging.Formatter(fmt="[%(name)s][%(levelname)s][%(asctime)s][%(lineno)s][%(message)s]")
        return ConsoleHandle,FileHandle

    def get_log(self,path):
        self.log.addHandler(self.ConsoleHandle())
        self.log.addHandler(self.FileHandle(path))
        return self.log

if __name__ == '__main__':
    log = Logging()
    #可以配置all.log存放的路径
    logger = log.get_log('./all.log')
    logger.debug("debug开始执行")
    logger.info("info开始执行")
    logger.warning("warning结束执行")
    logger.error("error结束执行")
    logger.critical("critical结束执行")

运行结果如下:

 

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

Python_Logging日志模块(一) 的相关文章

随机推荐

  • C语言实现在字符串中替换指定的字符串

    include
  • 【大数据采集技术与应用】【第一章】【大数据采集技术与应用概述】

    文章目录 1 1 大数据概述 1 1 1 大数据时代 1 1 2 大数据的概念 1 1 3 大数据的特征 1 1 4 大数据的应用 1 1 5 大数据关键技术 1 1 6 大数据处理流程 1 2 大数据采集技术概述 1 2 1 数据采集与大
  • Solidity API

    这是Solidity教程系列文章第8篇介绍Solidity API 它们主要表现为内置的特殊的变量及函数 存在于全局命名空间里 Solidity 系列完整的文章列表请查看分类 Solidity 写在前面 Solidity 是以太坊智能合约编
  • java 基础编程练习1

    题目描述 KiKi有一个矩阵 他想知道经过k次行变换或列变换后得到的矩阵 请编程帮他解答 输入描述 第一行包含两个整数n和m 表示一个矩阵包含n行m列 用空格分隔 1 n 10 1 m 10 从2到n 1行 每行输入m个整数 范围 231
  • PyTorch 图像:06.使用ONNX将模型转移至Caffe2和移动端

    使用ONNX将模型转移至Caffe2和移动端 在本教程中 我们将介绍如何使用 ONNX 将 PyTorch 中定义的模型转换为 ONNX 格式 然后将其加载到 Caffe2 中 一旦进入 Caffe2 我们就可以运行模型来仔细检查它是否正确
  • Intellij idea配置与使用教程

    俗话说 工欲善其事必先利其器 现在基本上做Java开发的工具都是用intellij idea 开发工具了 我观看了几个博客 其实写的都差不多 配置也都一样 故在此我就不累赘 直接附上几个链接仅供参考 解决IntelliJ IDEA启动缓慢的
  • 小程序如何引入第三方依赖或样式库

    使用第三方依赖 wx axios promise 如果直接引入模块同时还使用useExtendedLib引入了依赖 那么就会冲突 此时就需要构建npm了 import axios from wx axios promise const Ax
  • 公共异常处理方法

    通过建立公共异常处理类 就不需要在每一个controller中都使用try catch了 先定义执行成功或者出现异常返回的实体类 public class ResultOk implements Serializable private I
  • 数据库表字段命名规范

    数据库表字段命名规范 摘要 当前研发工作中经常出现因数据库表 数据库表字段格式不规则而影响开发进度的问题 在后续开发使用原来数据库表时 也会因为数据库表的可读性不够高 表字段规则不统一 造成数据查询 数据使用效率低的问题 所以有必要整理出一
  • python是一门面向对象的高级_【开发教程】Python高级课程之面向对象开发视频教程...

    Python从设计之初就已经是一门面向对象的语言 正因为如此 在Python中创建一个类和对象是很容易的 本章节我们将详细介绍Python的面向对象编程 如果你以前没有接触过面向对象的编程语言 那你可能需要先了解一些面向对象语言的一些基本特
  • 独孤九剑第三式-决策树和随机森林

    文章适合于所有的相关人士进行学习 各位看官看完了之后不要立刻转身呀 期待三连关注小小博主加收藏 小小博主回关快 会给你意想不到的惊喜呀 文章目录 前言 决策树理论讲解 问题引出 问题解决 信息熵 条件熵 信息增益 信息增益率 基尼指数 条件
  • ubuntu下Vim安装失败,报The following packages have unmet dependencies: vim : Depends: vim-common

    The following packages have unmet dependencies vim root ubuntu etc apt apt install vim Reading package lists Done Buildi
  • vscode

    01 vscode介绍使用 一 介绍 1 VScode是微软推出的一款轻量级的编辑器 采用了和VS相同的UI界面 2 界面介绍 左侧是用于展示所要编辑的所有文件和文件夹的文件管理器 依次是资源管理器 搜索 GIT 调试 插件 右侧是打开文件
  • LDA(Latent Dirichlet Allocation)主题模型算法

    LDA Latent Dirichlet Allocation 主题模型算法 LDA整体流程 先定义一些字母的含义 文档集合D topic集合T D中每个文档d看作一个单词序列 lt w1 w2 wn gt wi表示第i个单词 设d有n个单
  • const(一):(转) 一个函数名后面加const表示什么意思

    http zjw86212 blog 163 com blog static 116692085200910394324880 const用在成员函数后 主要是针对类的const对象 如 class Text public void pri
  • 嵌入式Linux开发环境搭建-2-制作编译工具

    嵌入式Linux开发环境搭建 2 制作编译工具 一 安装基本开发环境 1 1 build essential安装 1 2 bison和flex 4 3 安装C函数库的man手册 二 安装交叉编译工具链 2 1 相关软件下载 2 2 修改一个
  • 使用wxWidgets的wxGenericAboutDialog类

    使用wxWidgets的wxGenericAboutDialog类 wxWidgets是一个开源的C 图形用户界面库 用于跨平台的应用程序开发 它提供了丰富的GUI控件和工具 使开发者能够轻松地创建具有不同操作系统外观的应用程序 其中 wx
  • 利用GeoHash实现逆地理编码(经纬度坐标转换行政区划)

    目录 前言 理解GeoHash GeoHash精度 GeoHash特征 GeoHash规律 逆地理编码 实现逆地理编码的基本思路 1 全国范围内6位精度GeoHash计算 2 获取全国范围内区 县 三级市级别行政区划地址围栏点 3 计算6位
  • 监督学习和无监督学习

    文章目录 监督学习和无监督学习 监督学习算法包括 无监督学习算法包括 OpenCV十个子类 举例 监督学习和无监督学习 监督学习和无监督学习是机器学习领域中两种不同的学习范式 它们之间的区别在于数据的标签或标记的可用性以及学习任务的性质 监
  • Python_Logging日志模块(一)

    一 日志的作用 展现当前程序的活动情况 记录程序的运行轨迹 规范稳定的日志可以帮助开发者迅速定位程序的问题 二 日志的内容 正常情况下 一条完整的日志应该包含调用日志的时间戳 数字形式的日志级别 调用日志的实例化函数的路径 线程名 抛出的活