Python项目日志打点功能实现方法

一、入门介绍

1.1 logging和logger的区别

logging和logger是Python的logging模块中的两个关键概念,它们在功能和用途上有明显的区别。
logging是一个Python标准库,是一个用于记录日志的标准模块。它提供了一个灵活的框架,可以用来记录不同级别的日志信息,包括从调试信息到严重错误的信息。logging模块可以配置日志的输出格式、日志级别以及日志的输出位置,如文件、终端、甚至是邮件。
而logger则是logging模块中的一个重要概念,可以理解为是logging模块的一部分。Logger是记录器,是一个具体的日志记录工具。每个Logger都有自己的日志级别,并且可以拥有多个处理器(handler),每个处理器负责处理日志记录的不同部分,例如将日志记录输出到文件或发送到邮件。
总结来说,logging是一个模块,提供了记录日志的框架和功能,而logger是logging模块中的一部分,是具体的日志记录工具。

1.2 logging.basicConfig设置日志级别与logger.setLevel作用一样吗

logging.basicConfig设置的日志级别和logger.setLevel(logging.DEBUG)作用不完全一样。
logging.basicConfig是Python标准库logging模块中的一个函数,用于对logging进行基础的配置,如设置日志级别、输出格式等。其中,日志级别是可以设置的,默认级别为WARNING。但logger.setLevel方法用于设置logger的日志级别,这个设置会影响到该logger以及它所创建的handler的日志级别,默认级别为DEBUG。
因此,虽然logging.basicConfig设置的日志级别和logger.setLevel(logging.DEBUG)都可以用来设置日志级别,但它们的作用范围和影响不同。logging.basicConfig主要影响全局的日志行为,而logger.setLevel主要影响单个logger的行为。
在实际项目使用中,使用logging.basicConfig或使用logger都可以实现对打点日志的规范,二选一即可。

1.3 logging模块提供的Handler类型

  • StreamHandler:将日志消息输出到流对象,如文件、终端等
  • FileHandler:将日志消息写入文件。
  • RotatingFileHandler:将日志消息写入文件,当文件达到一定大小后会自动滚动
  • TimedRotatingFileHandler:将日志消息写入文件,并在指定的时间间隔后滚动
  • SocketHandler:将日志消息发送到网络套接字
  • DatagramHandler:将日志消息发送到UDP套接字
  • SMTPHandler:将日志消息通过电子邮件发送给指定的接收者
  • SysLogHandler:将日志消息发送到系统日志
  • NTEventHandler:将日志消息发送到Windows事件日志
  • HTTPHandler:将日志消息发送到HTTP服务器

二、实际应用代码

2.1 不做任何配置的情况

import logginglogging.warning('Hello World!')  # 在什么都不配置和设定的情况下,logging会简单地将日志打印在显示器上
logging.info('I miss you so much')  # 这行不会被打印,因为级别低于默认级别,默认级别是WARNING

2.2 配置basicConfig将日志输出至文件中

import logging# 创建logger记录器
logging.basicConfig(filename='example.log', level=logging.DEBUG)
logging.warning('Hello World!') 
logging.info('I miss you so much') 

2.3 通过logger实现日志打点功能

import logging
from logging.handlers import TimedRotatingFileHandlerdef init(level):"""日志文件的初始化方法"""logger = logging.getLogger("my_logger")formatterStr = '[%(asctime)s] [%(threadName)s] [line:%(lineno)d] %(levelname)s: %(message)s'log_formatter = logging.Formatter(formatterStr)# 控制台日志console_handler = logging.StreamHandler()console_handler.setFormatter(log_formatter)# 用于处理日志文件的滚动cur_day = time.strftime('%Y%m%d%H', time.localtime(time.time()))log_file = "logs/" + cur_day + ".log"info_handler = TimedRotatingFileHandler(filename=log_file,when='H',interval=1,backupCount=10,encoding='utf-8')# 设置文件里写入的格式info_handler.setFormatter(log_formatter)if level == "debug":logger.setLevel(logging.DEBUG)console_handler.setLevel(logging.DEBUG)info_handler.setLevel(logging.DEBUG)else:logger.setLevel(logging.INFO)console_handler.setLevel(logging.INFO)info_handler.setLevel(logging.INFO)# 添加日志处理器logger.addHandler(console_handler)logger.addHandler(info_handler)return loggerlogger = init("info")logger.info("aaaaaaaaaaaaaaaa")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt应用开发(基础篇)——对话框窗口 QDialog

一、前言 QDialog类继承于QWidget,是Qt基于对话框窗口(消息窗口QMessageBox、颜色选择窗口QColorDialog、文件选择窗口QFileDialog等)的基类。 QDialog窗口是顶级的窗口,一般情况下,用来当做用户短期任务(确认、输入、选择)或者和用户交流(提…

一、安装GoLang环境和开发工具

一、安装GoLang环境 GoLang中国镜像站 下载后对应的环境包以后,一路下一步就好了,安装路径的话,尽量就安装到默认的文件目录下。 二、配置Go的环境变量 右击此电脑–>属性–>高级系统设置–>环境变量,打开环境变量设置…

MySQL高阶语句之常用查询

目录 常用查询 按关键字排序 区间判断及查询不重复记录 对结果进行分组 限制结果条目 设置别名 通配符 子查询 常用查询 (增、删、改、查) 对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 …

设计模式之工厂模式(万字长文)

文章目录 概述工厂模式的优点包括工厂模式有几种主要的变体看一个具体需求使用传统的方式来完成传统的方式的优缺点 简单工厂模式基本介绍使用简单工厂模式简单工厂模式的优缺点优点:缺点: 工厂方法模式看一个新的需求思路 1思路 2工厂方法模式介绍工厂方…

生成式AI,赋能数字劳动力的关键工具

人们认为,生成式人工智能是一种可以让他们用自己的话来提问或生成副本和图像的工具。事实也是如此,人工智能在这两方面上都做的非常好,但让人意想不到的是,它还蕴含着改变我们个人和专业工作的巨大潜力,能帮我们访问、…

Unity记录4.5-存储-随角色加载的Tilemap

文章首发见博客:https://mwhls.top/4820.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议,私信不回。 汇总:Unity 记录 摘要:随着角色移动而动态加载的tilemap。 思路-2023/08/18 …

nextTick原理

nextTick 是 Vue 提供的一个异步方法,用于在 DOM 更新之后执行回调函数。它的原理是利用 JavaScript 的事件循环机制来实现异步执行。 具体来说,当我们调用 nextTick 方法时,Vue 会将传入的回调函数添加到一个队列中。在下一个事件循环中&am…

Django(7)-项目实战-发布会签到管理系统

本文使用django实现一个简单的发布会签到管理系统 登录功能 模板页面 sign/templates/index.html <!DOCTYPE html> <html> <head><title>Login Page</title> </head> <body><h1>发布会管理</h1><form action=&qu…

springboot实战(一)之项目搭建

环境准备 ideajdk1.8springboot版本 2.7.15 项目开始 1.打开idea&#xff0c;点击new project 2.选择spring initillizr 核对&#xff1a;Server Url是否是&#xff1a;start.spring.io&#xff0c;然后根据自己依次设置项目名称、存储位置和包名&#xff0c;如下&#xff…

北京开发APP的费用明细

开发APP项目时&#xff0c;在功能确定后需要知道有哪些可能的费用&#xff0c;安排项目预算。北京开发APP的费用明细可能会包括以下几个部分&#xff0c;每个部分都会产生一些费用。今天和大家分享APP费用明细有哪些&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&…

C语言 - 程序的分文件编写

说明过程 C语言程序可以通过分文件编写来提高代码的结构性和可维护性。下面是一个简单的示例&#xff0c;展示了C语言程序如何分文件编写&#xff1a; 创建多个源文件&#xff1a;将程序的不同部分分别写在不同的源文件中&#xff0c;每个文件包含一个或多个相关的函数。比如&…

vue2 自定义指令,插槽

一、学习目标 1.自定义指令 基本语法&#xff08;全局、局部注册&#xff09;指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 二、自定义指令 1.指令介绍 内置指令&#xff1a;v-html、v-if、v-bind、v-on… 这都是Vue给咱们内置的一些指令&#xff0c;…

大数据之Maven

一、Maven的作用 作用一&#xff1a;下载对应的jar包 避免jar包重复下载配置&#xff0c;保证多个工程共用一份jar包。Maven有一个本地仓库&#xff0c;可以通过pom.xml文件来记录jar所在的位置。Maven会自动从远程仓库下载jar包&#xff0c;并且会下载所依赖的其他jar包&…

《信息系统项目管理师教程(第4版)》第17章 采购管理、合同管理 知识点整理,xmind思维导图

已上传采购管理xmind思维导图&#xff0c;需要的同学可以直接下载哦。 一、规划采购管理 二、实施采购 三、控制采购 四、合同管理 4.1 合同类型 4.2 合同管理过程 签订履行变更档案&#xff0c;合同档案管理是整个合同管理的基础&#xff0c;要求采用电脑打印文本&#xff…

考研408 | 【操作系统】终章

I/O设备的基本概念和分类 I/O设备&#xff1a; I/O设备的分类 1.按使用特性&#xff1a; 2.按传输速率分类&#xff1a; 3.按信息交换的单位分类&#xff1a; 总结&#xff1a; I/O控制器 I/O设备的机械部件&#xff1a; I/O设备的电子部件&#xff08;I/O控制器&#…

国标视频融合云平台EasyCVR视频汇聚平台的应用场景及其功能说明

一、平台简介 EasyCVR国标视频融合云平台是一款基于端-边-云一体化架构的视频融合AI智能分析网关平台。EasyCVR平台支持视频汇聚、融合管理&#xff0c;兼容多类型设备、多协议接入。其提供的视频功能包括&#xff1a;视频监控、无插件直播录像、云存储、检索回放、智能告警、…

uniapp微信小程序使用stomp.js实现STOMP传输协议的实时聊天

简介&#xff1a; 原生微信小程序中使用 本来使用websocket&#xff0c;后端同事使用了stomp协议&#xff0c;导致前端也需要对应修改。 如何使用 1.yarn add stompjs 2.版本 “stompjs”: “^2.3.3” 3.在static/js中新建stomp.js和websocket.js&#xff0c;然后在需要使用…

E8267D 是德科技矢量信号发生器

描述 最先进的微波信号发生器 安捷伦E8267D PSG矢量信号发生器是业界首款集成式微波矢量信号发生器&#xff0c;I/Q调制最高可达44 GHz&#xff0c;典型输出功率为23 dBm&#xff0c;最高可达20 GHz&#xff0c;对于10 GHz信号&#xff0c;10 kHz偏移时的相位噪声为-120 dBc/…

Linux防火墙命令

开启防火墙 systemctl start firewalld关闭防火墙 systemctl stop firewalld # 暂时关闭防火墙 systemctl disable firewalld # 永久关闭防火墙(禁用开机自启) systemctl enable firewalld # 永久开启防火墙(启用开机自启)重启防火墙 systemctl restart firewalld重载规则 …

【UBuntu 20.04环境配置】

一、基础环境搭建 1.1 直接安装–官网搜索下载安装即可 安装搜狗输入法安装chrome安装Typora安装vscode 1.2 C环境配置 安装g、gcc等&#xff0c;一般Ubuntu20.04 的build-essential对应gcc和g9.4.0的版本。 直接使用命令安装和使用build-essential的区别为&#xff1a;区别…