【Python】logging模块笔记

news2024/9/24 23:25:29

目录

日志级别

四个组件

 记录器

 处理器

 处理器

 格式化器

 格式

 用法1:小项目可以采用编程的方法

用法2:建议采用配置文件的方式

用法3: 字典配置


日志级别

#默认的日志输出为warning
# 使用baseConfig() 来指定日志输出级别
# 同时,是可以存入log文件 默认追加模式
# filemode='w' 每次重写日志文件
logging.basicConfig(filename='demo.log', filemode='w', level=logging.DEBUG)

logging.debug("")
logging.info("")
logging.waring("")
logging.error("")
logging.critical("")

定义日志输出的格式

场景:输出格式和添加一些公共信息

# message为原本要输出的信息
# asctime 时间
# levelname 日志等级
# filename 文件名
# lineno 行号
# datefmt 时间格式
logging.basicConfig(format="%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s", 
datefmt="%Y-%m-%d %H:%M:%S", 
, level=logging.DEBUG)

四个组件

 

 记录器

 处理器

 处理器

 格式化器

 格式

 用法1:小项目可以采用编程的方法

# 记录器
logger = logging.getLogger() 
# 默认为root 
logger = logging.getLogger('applog') #设置一个名为applog的记录器
logger.setLevel(logging.DEBUG)

# 处理器
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
# 不指定Handler的日志级别,默认使用记录器的
# 记录器里面的日志级别优先级最高,如想要不同Handler里面的日志级别不一样,就要将记录器的日志级别设置成Handler里面的最低的等级
fileHandle = logging.FileHandler(filename='addDemo.log')

# 格式化器
formatter = logging.Formatter("%(asctime)s|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s")

# 给处理器设置格式
consoleHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)

# 记录器要设置处理器
logger.addHandler(consoleHandler)
logger.addHandler(fileHandler)

# 设置过滤器
# 命名空间以cn.guitu开头的才符合要求
flt = logging.Filter("cn.guitu")

# 关联过滤器
logger.addFilter(flt)

fileHandler.addFilter(flt)


# 打印日志代码 用记录器
logger.debug("")
logger.info("")

用法2:建议采用配置文件的方式

logging.conf

[loggers]
keys=root,applog

[handlers]
keys=fileHandler, consoleHandler

[formatter]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_applog]
level=DEBUG
handlers=fileHander, consoleHandler
qualname=applog #
propagate=0

[handler_consoleHandler]
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter

[handler_fileHandler]
class=handlers.TimeRotatingFileHandler
arg=('applog.log', 'midnight', 1,0) #每天午夜十二点生成新的日志文件
# 1 是午夜十二点向后延时1秒后开始备份,0代表不被删除 可设置保留时间 单位为s 
level=DEBUG
formatter=simpleFormatter

[formatter_simpleFormatter]
format=format=%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s|%(message)s
datefmt=%Y-%m-%d %H:%M:%S

使用配置文件

import logging
import logging.config

logging.config.fileConfig('logging.conf')

rootLogger = logging.getLogger()
logger = logging.getLogger('applog')

rootLogger.info("")
logger.debug("")

a = 'abc'
try:
    int(a)
except Exception as e:
    # logger.error(e)
    logger.exception(e)

用法3: 字典配置

可以从数据库,配置文件读入,只要将输出接口的格式变成字典(json,xml)

来源:

Python基础之标准库logging 你还在用print来调试程序吗,OUT啦_哔哩哔哩_bilibili

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

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

相关文章

每日一题——找到消失的数字

找到消失的数字 题目链接 思路 一个长度为n的数组中所有数据的范围在[1,n]内,题目要求我们找出在[1,n]范围内,但数组中没有出现的数字 如果可以使用额外空间,那这题就好办了。我们直接创建一个相同大小的数组,数组的每个位置代…

三. 多传感器标定方案(空间同步)--2

前面的内容: 一. 器件选型心得(系统设计)--1_goldqiu的博客-CSDN博客 一. 器件选型心得(系统设计)--2_goldqiu的博客-CSDN博客 二. 多传感器时间同步方案(时序闭环)--1 三. 多传感器标定方案…

AI聊天GPT三步上篮!

1、是什么? CHATGPT是OpenAI开发的基于GPT(Generative Pre-trained Transformer)架构的聊天型人工智能模型。也就是你问它答,根据网络抓去训练 2、怎么用? 清晰表达自己诉求,因为它就是一个AI助手&#…

【腾讯云 Cloud Studio 实战训练营】Cloud Studio实现健康上报小程序(代码开源)

目录 🍳前言🍳实验介绍🍳产品介绍🍳注册Cloud Stdio🍳后端Spring服务🍳创建项目上传项目数据库连接与导入 🍳Vue后台管理创建项目编辑模板信息选择环境镜像上传资源文件 🍳小程序⭐总…

容器演进时间轴及容器技术演进

1.1 1979年 — chroot 容器技术的概念可以追溯到1979年的UNIX chroot。 它是一套“UNIX操作系统”系统,旨在将其root目录及其它子目录变更至文件系统内的新位置,且只接受特定进程的访问。 这项功能的设计目的在于为每个进程提供一套隔离化磁盘空间。 …

NIM游戏/SG函数

NIM游戏 先看一下一维 NIM游戏。 有一堆大小为 n 的石子,甲和乙轮流从石堆里面拿石子,不能一次拿掉所有石子,取走最后一个石子的人获胜,甲先开始,谁是必胜的? 显然,谁先手,谁就获胜…

蓝桥杯单片机第五届国赛 真题+代码

onewire.c /* # 单总线代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运行速度和试题中对单片机时钟频率的要求,进行代码调试和修改。 */// #include …

Opencv的Mat内容学习

来源&#xff1a;Opencv的Mat内容小记 - 知乎 (zhihu.com) 1.Mat是一种图像容器&#xff0c;是二维向量。 灰度图的Mat一般存放<uchar>类型 RGB彩色图像一般存放<Vec3b>类型。 (1)单通道灰度图数据存放样式&#xff1a; (2)RGB三通道彩色图存放形式不同&#x…

微服务性能分析工具 Pyroscope 初体验

Go 自带接口性能分析工具 pprof&#xff0c;较为常用的有以下 4 种分析&#xff1a; CPU Profiling: CPU 分析&#xff0c;按照一定的频率采集所监听的应用程序 CPU&#xff08;含寄存器&#xff09;的使用情况&#xff0c;可确定应用程序在主动消耗 CPU 周期时花费时间的位置…

数值线性代数:奇异值分解SVD

本文记录计算矩阵奇异值分解SVD的原理与流程。 注1&#xff1a;限于研究水平&#xff0c;分析难免不当&#xff0c;欢迎批评指正。 零、预修 0.1 矩阵的奇异值 设列满秩矩阵&#xff0c;若的特征值为&#xff0c;则称为矩阵的奇异值。 0.2 SVD(分解)定理 设&#xff0c;则…

❤ Redirected when going from “/login“ to “/“ via a navigation guard错误

❤ vue路由遇到 Redirected when going from “/login“ to “/“ via a navigation guard错误 路由版本&#xff1a;“vue-router”: “^3.5.2”, 添加了路由守卫&#xff0c;然后开始报这个错误&#xff0c; 原因 就是路由版本导致的 解决办法 // 导航守卫限制路由跳转 …

Jenkins插件管理切换国内源地址

一、替换国内插件下载地址 选择系统管理–>插件管理–> Available Plugins 并等待页面完全加载完成、这样做是为了把jenkins官方的插件列表下载到本地、接着修改地址文件、替换为国内插件地址 进入插件文件目录 cd /var/lib/jenkins/updatesdefault.json 为插件源地址…

比较两字符串数组中对应位置元素的大小char.greater()和char.less()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 比较两字符串数组中 对应位置元素的大小 char.greater()和char.less() [太阳]选择题 下列代码最后输出的结果是&#xff1f; import numpy as np x1 np.array([a, bc, D]) print("【显…

go 查询采购单设备事项V3

一、版本说明 本版本在整合上两次的功能基础上&#xff0c;引进ini配置文件的读取事项&#xff0c;快速读取本地配置文件&#xff0c;完成读取设置 第一版&#xff1a;实现了严格匹配模式的查找 https://blog.csdn.net/wtt234/article/details/131979385 第二版&#xff1a;实…

整数转换-C语言/Java

描述 整数转换。编写一个函数&#xff0c;确定需要改变几个位才能将整数A转成整数B。A&#xff0c;B范围在[-2147483648, 2147483647]之间。 示例1&#xff1a; 输入&#xff1a;A 29 &#xff08;或者0b11101&#xff09;, B 15&#xff08;或者0b01111&#xff09; 输出&…

c++数据锁链

题目描述&#xff1a; 创建一个结构体为Node&#xff0c;具有value , next 两个属性&#xff1b; value为整型&#xff0c;用来储存结构体数值&#xff1b; next为Node类型指针&#xff0c;用来指向下一组数据地址&#xff1b; 第1组数据value 5&#xff1b; 第2组数据value …

1400*C. String Equality(greedy)

Example input 4 3 3 abc bcd 4 2 abba azza 2 1 zz aa 6 2 aaabba ddddcc output No Yes No Yes 题意&#xff1a; 字符串a和b&#xff0c;其字母顺序可以任意交换&#xff0c;k个连续的相同字母&#xff0c;可以全部变为大于这个字母的其他字母&#xff08;bb->cc&…

小程序动态隐藏分享按钮

// 禁用分享 wx.hideShareMenu({menus: [shareAppMessage, shareTimeline] })// 显示分享 wx.showShareMenu({withShareTicket: true,menus: [shareAppMessage, shareTimeline] })//私密消息 wx.updateShareMenu({isPrivateMessage: true, })

Docker容器监控之 CAdvisor+InfluxDB+Granfana

通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据&#xff0c;一般小公司够用了。但是&#xff0c;docker stats统计结果只能是当前宿主机的全部容器&#xff0c;数据资料是实时的&#xff0c;没有地方存储、没有健康指标过线预警等功能…