当前位置: 首页 > article >正文

Python 日志(略讲)

日志操作

在这里插入图片描述

日志输出:

# 输出日志信息
logging.debug("调试级别日志")
logging.info("信息级别日志")
logging.warning("警告级别日志")
logging.error("错误级别日志")
logging.critical("严重级别日志")

级别设置

logging.basicConfig(level=logging.DEBUG") #设置日志级别从DEBUG级开始

基础操作Code

# author:xiaowang
# date:2023/12/6
# 需求:日志  优先级:DEBUG < INFO < WARNING < ERROR< CRITICAL
# 用途:调试程序
import logging
# 自定义日志格式
# fmt = "%(asctime)s - %(levelname)s - %(message)s"
# 时间、级别、用户、文件名、类名、行、提示信息
fmt="%(asctime)s -%(levelname)s -[%(name)s] -[%(filename)s -(%(funcName)s:%(lineno)d)] - %(message)s"
# 设置日志级别从那级开始
logging.basicConfig(level=logging.DEBUG,format=fmt,filename="log/shuchu.log") #设置日志级别从DEBUG级开始

# 输出日志信息
logging.debug("调试级别日志")
logging.info("信息级别日志")
logging.warning("警告级别日志")
logging.error("错误级别日志")
logging.critical("严重级别日志")

输出到文档

在这里插入图片描述

高级操作

流程:

在这里插入图片描述
在这里插入图片描述
Q1:日志器和处理器都设置了级别,到底是执行那个级别?
谁的级别高谁起作用

高级操作 Code

# 原理类似分液漏斗 四大组件日志器 logger 处理器 handler 格式器 formatter 过滤器 filter
import logging.handlers  #手工导包
import logging
import time

logger = logging.getLogger() #创建日志器
logger.setLevel(logging.DEBUG) #设置日志级别
sf = logging.StreamHandler() #创建控制台处理器
hf = logging.handlers.TimedRotatingFileHandler("log.log",when='M',interval=1,backupCount=3) #创建文件处理器(每隔1分钟备份1次,1次3份)
sf.setLevel(logging.DEBUG) #将DEBUG级别的提示信息送到控制台
hf.setLevel(logging.INFO) #将INFO级别的提示信息送到文件处理器

# 创建格式器
fmt="%(asctime)s -%(levelname)s -[%(name)s] -[%(filename)s -(%(funcName)s:%(lineno)d)] - %(message)s"
formatter = logging.Formatter(fmt=fmt)

# 将格式器添加到处理器中
sf.setFormatter(formatter)
hf.setFormatter(formatter)

# 将处理器添加到日志
logger.addHandler(sf)
logger.addHandler(hf)

#输出日志信息
while True:
    time.sleep(3)
    logging.debug("调试级别日志")
    logging.info("信息级别日志")
    logging.warning("警告级别日志")
    logging.error("错误级别日志")
    logging.critical("严重级别日志")

在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/161168.html

相关文章:

  • 你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?
  • XIAO ESP32 S3网络摄像头——2视频获取
  • 2025/1/1 路由期末复习作业二
  • 「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
  • 加固服务器有什么用?
  • 《前端web开发-CSS3基础-1》
  • Java程序员,你掌握了多线程吗?(文末送书)
  • 圣诞将至—C语言圣诞树代码来啦
  • VIR-SLAM代码分析3——VIR_VINS详解之estimator.cpp/.h
  • Wnmp本地搭建结合内网穿透实现远程访问本地Wnmp服务
  • 使用VS Code远程开发MENJA小游戏并通过内网穿透分享本地游戏到公网
  • NR重写console.log 增加时间信息
  • 在Linux上安装KVM虚拟机
  • 冒泡排序详解
  • Android 记录一些Framework开发的命令
  • Think in Java之多态
  • 2024年网络安全比赛--系统渗透测试(超详细)
  • vue.js el-table 动态单元格列合并
  • 数据库压力测试方法小结
  • TiDB专题---2、TiDB整体架构和应用场景
  • YashanDB练习SQL
  • CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS、LDFLAGS、LD_LIBRARY_PATH区别
  • 高效的单行python脚本
  • C++ 指针进阶
  • Python-函数详解(局部、全局变量)
  • Springboot resource 下的excel