python-引用配置文件和日志

文章目录

  • 前言
    • python-引用配置文件和日志
      • 1. 给一个配置文件
      • 2. 获取配置文件信息方法
      • 3. 获取配置信息,引入日志分页功能demo
      • 4. 测试

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


python-引用配置文件和日志

1. 给一个配置文件

在这里插入图片描述
配置文件:logConflg.ini
详情:

[logging]
log_file = logs/logTest.log
log_level = INFO
max_bytes = 10240
backup_count = 5

[paths]
chrome_path = C:/Users/杨镇宇/AppData/Local/Google/Chrome/Application/chrome.exe

注意的是要在配置文件中使用普通字符串的路径格式,而不要使用 Python 字符串字面量标志。
因为 configparser 读取的内容都是普通字符串。

2. 获取配置文件信息方法

# 获取脚本的当前路径
current_dir = pathlib.Path(__file__).parent

# 配置文件路径
config_file = current_dir / 'data' / 'logConfig.ini'

# 读取配置文件
config = configparser.ConfigParser()
with open(config_file, 'r', encoding='utf-8') as f:
    config.read_file(f)

# 从配置文件中读取日志配置
log_file = current_dir / config['logging']['log_file']
log_level = config['logging'].get('log_level', 'INFO').upper()
max_bytes = config['logging'].getint('max_bytes', 100)  # 默认10KB
backup_count = config['logging'].getint('backup_count', 5)  # 默认保留5个文件
chrome_path = config['paths']['chrome_path']

3. 获取配置信息,引入日志分页功能demo

实现日志分页功能:
可以使用:logging.handlers 模块中的 RotatingFileHandler。它可以在日志文件达到指定大小时自动创建新的日志文件。

import logging.config
import configparser
import pathlib
from logging.handlers import RotatingFileHandler

# 获取脚本的当前路径
current_dir = pathlib.Path(__file__).parent

# 配置文件路径
config_file = current_dir / 'data' / 'logConfig.ini'

# 读取配置文件
config = configparser.ConfigParser()
with open(config_file, 'r', encoding='utf-8') as f:
    config.read_file(f)

# 从配置文件中读取日志配置
log_file = current_dir / config['logging']['log_file']
log_level = config['logging'].get('log_level', 'INFO').upper()
max_bytes = config['logging'].getint('max_bytes', 10240)  # 默认10KB
backup_count = config['logging'].getint('backup_count', 5)  # 默认保留5个文件
chrome_path = config['paths']['chrome_path']

# 创建日志目录(如果不存在)
log_file.parent.mkdir(parents=True, exist_ok=True)

# 配置日志记录
logging.basicConfig(
    level=log_level,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        RotatingFileHandler(log_file, mode='a', maxBytes=max_bytes, backupCount=backup_count, encoding='utf-8'),
        logging.StreamHandler()
    ]
)

logger = logging.getLogger(__name__)

# 示例函数
def example_function():
    logger.debug("This is a debug message")
    logger.info(f'chrome_path: {chrome_path}')
    logger.warning("This is a warning message")
    logger.error("This is an error message")
    logger.critical("This is a critical message")

def main():
    logger.info("Application started")
    try:
        example_function()
    except Exception as e:
        logger.exception("An error occurred")
    logger.info("Application finished")


if __name__ == "__main__":
    main()

4. 测试

在这里插入图片描述
为了测试我将分页字节数从10240改成了10,频繁调用后结果:
在这里插入图片描述
测试成功。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【乐吾乐2D可视化组态编辑器】文件

1 文件 文件:文件的新建、打开、导入、保存、另存为、下载JOSN文件、下载ZIP打包文件、导出为HTML、导出为Vue2组件、导出为Vue3组件、导出为React组件(老版将不再维护)、下载为PNG、下载为SVG 乐吾乐2D可视化组态编辑器demo:ht…

HTTP协议和Nginx

一、HTTP协议和Nginx 1.套接字Socket 套接字Socket是进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI出现于1983年BSD4.2实现在建立通信连接的每一端,进程间的传输…

mac配置修改host文件

1command 空格 输入 terminal 选中回车进入终端控制台. command 空格 2 sudo vi /etc/hosts 输入密码,进入vi编辑器修改文件 sudo vi /etc/hosts3修改内容,:wq保存退出,重启项目即可 :wq

全景图片/老照片/动漫图片一键无损放大与修复

在日常生活中,我们经常使用系统自带的图片处理软件来对图片进行缩放操作,从而实现放大或缩小图片。然而,这种方法会带来一个问题:如果原始图片较小,放大后会导致精度损失,使图片变得模糊。 近年来&#xf…

Radxa 学习摘录

文章目录 一、参考资料二、硬件知识 一、参考资料 技术论坛(推荐) 官方资料下载 wiki资料 u-boot 文档 u-boot 源码 内核文档 内核源码 原理图 二、硬件知识 Radxa 3B 主板概览 MIPI接口 MIPI CSI(Camera Serial Interface)…

MemManage_Handler 问题的解决思路

1、问题 在做一个安全类项目时发现,软件在运行一段时间后会进入"MemManage_Handler",遂开始了一系列查找。 2、解决 (1)查看堆栈数据 查堆栈的数据,发现堆栈也被破坏了,看不出来是执行哪个任务执行导致的…

mediasoup 源码分析 (八)分析PlainTransport

mediasoup 源码分析 (六)分析PlainTransport 一、接收裸RTP流二、mediasoup 中udp建立过程 tips 一、接收裸RTP流 PlainTransport 可以接收裸RTP流,也可以接收AES加密的RTP流。源码中提供了一个通过ffmpeg发送裸RTP流到mediasoup的脚本&…

centos上快速搭建zfile文件网站

什么是zfile? zfile文件网站是最方便快捷的在线目录展示程序,支持将本地文件、FTP、SFTP、S3、OneDrive 等存储在网站上展示并浏览! 本教程参考: https://docs.zfile.vip/install/os-linux复现 今天的搭建环境是centos7.9 第一…

CPPTest设计分析

目录 1 概述2 设计3 扩展Output3.1 扩展实例 1 概述 CppTest是一个可移植、功能强大但简单的单元测试框架,用于处理C中的自动化测试。重点在于可用性和可扩展性。支持多种输出格式,并且可以轻松添加新的输出格式。 CppTest下载地址Sourceforge Github地…

Java技术栈总结:数据库MySQL篇

一、慢查询 1、常见情形 聚合查询 多表查询 表数据量过大查询 深度分页查询 2、定位慢查询 方案一、开源工具 调试工具:Arthas运维工具:Prometheus、Skywalking 方案二、MySQL自带慢日志 在MySQL配置文件 /etc/my.conf 中配置: # …

云原生技术峰会:引领智能算力时代的创新浪潮

云原生技术峰会:引领智能算力时代的创新浪潮 随着云计算技术的飞速发展和智能算力的不断提升,云原生架构已成为推动企业数字化转型的重要力量。一场汇聚了业界顶尖专家和学者的云原生技术峰会成功举行,与会者共同探讨了云原生在智能算力时代…

python3用两个栈实现一个队列

栈与队列 栈:先入后出,First In First Out (FIFO) ,类似桶(入到桶底、取从桶顶) 队列:先入先出,First In Last Out (FILO) 用两个栈实现一个队列 两个桶(栈)&#x…

Shell 编程入门

优质博文:IT-BLOG-CN 【1】x.sh文件内容编写: 固定开头:#!/bin/sh; 【2】学习的第一个命令就是echo输出的意思; 【3】其实shell脚本也就是在文件中写命令,但是我们要写的是绝对路径&#xff1a…

Web渗透:逻辑越权漏洞

逻辑越权漏洞(Business Logic Vulnerability)是指攻击者利用应用程序业务逻辑中的漏洞,绕过正常的安全控制,执行未授权的操作。与常见的技术性漏洞不同,逻辑越权漏洞通常与应用程序的功能和流程有关,需要对…

Java初识集合(后续不断补充)

第一次更新时间:2024.6.26 集合概述 Java中的集合就像一个容器,专门用来存储Java对象(实际上是对象的引用,但习惯称为对象),这些对象可以是任意的数据类型,并且长度可变。其中,这些…

使用go语言来完成复杂excel表的导出导入

使用go语言来完成复杂excel表的导出导入(一) 1.复杂表的导入 开发需求是需要在功能页面上开发一个excel文件的导入导出功能,这里的复杂指定是表内数据夹杂着一对多,多对一的形式,如下图所示。数据杂乱而且对应不统一。…

基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 , 并使之尽早地投入应用 , 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案, 给出机械手臂控制系统的结构框图 。 详细设计六自由度可控机械手臂…

1991java Web体检预约管理系统eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP体检预约管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用…

2024华为数通HCIP-datacom最新题库(变题更新⑤)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

MATLAB-遗传GA-CNN-SVM,基于GA遗传优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

MATLAB-遗传GA-CNN-SVM,基于GA遗传优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯&#xf…