日志的基本用法

目标

1. 掌握如何设置日志级别

2. 掌握如何设置日志格式

3. 掌握如何将日志信息输出到文件中

1. logging模块

Python中有一个标准库模块logging可以直接记录日志

1.1 基本用法

import logging
logging.debug("这是一条调试信息")
logging.info("这是一条普通信息")
logging.warning("这是一条警告信息")
logging.error("这是一条错误信息")
logging.critical("这是一条严重错误信息")

1.2 设置日志级别

logging中默认的日志级别为WARNING,程序中大于等于该级别的日志才能输出,小于该级别的日志不会被打印出 来。

设置日志级别

logging.basicConfig(level=logging.DEBUG)

如何选择日志级别

在开发环境和测试环境中,为了尽可能详细的查看程序的运行状态来保证上线后的稳定性,可以使用DEBUG 或INFO级别的日志获取详细的日志信息,这是非常耗费机器性能的。

在生产环境中,通常只记录程序的异常信息、错误信息等(设置成WARNING或ERROR级别),这样既可以 减小服务器的I/O压力,也可以提高获取错误日志信息的效率和方便问题的排查。

1.3 设置日志格式

默认的日志的格式为:

日志级别:Logger名称:日志内容

自定义日志格式:

logging.basicConfig(format="%(levelname)s:%(name)s:%(message)s")

format参数中可能用到的格式化信息:

示例代码:

import logging
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
logging.basicConfig(level=logging.INFO, format=fmt)
logging.debug("调试")
logging.info("信息")
logging.warning("警告")
logging.error("错误")

1.4 将日志信息输出到文件中

默认情况下Python的logging模块将日志打印到了标准输出中(控制台) 将日志信息输出到文件中:

logging.basicConfig(filename="a.log")

示例代码:

import logging
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
logging.basicConfig(filename="a.log", level=logging.INFO, format=fmt)
logging.debug("调试")
logging.info("信息")
logging.warning("警告")
logging.error("错误")

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

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

相关文章

迪安诊断数智中心战略与PMO负责人徐黎明受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 迪安诊断技术集团股份有限公司数智中心战略与PMO负责人徐黎明先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“软件研发项目管理指标体系建设实践”。大会将于6月29-30日在北京举办,敬请关注! …

01-项目功能,架构设计介绍

稻草快速开发平台 开发背景就是通过此项目介绍使用SpringBoot Vue3两大技术栈开发一个拥有动态权限、路由的前后端分离项目,此项目可以继续完善,成为一个模板为将来快速开发做铺垫。 实现功能 开发流程 通过命令构建前端项目在VSCode中开发&#xff…

【话题】Agent AI智能体的未来

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景一、Agent AI智能体的角色二、Agent AI智能体的发展路径三、Agent AI智能体可能带来的挑战文章推荐 背景 随着Agent AI智能体的智能化水平不断提高,它们…

Android----USB通信

在Android开发中实现USB通信,通常涉及到与USB设备的交互,包括请求设备权限、与设备通信等步骤。以下是一个简化的流程,展示了如何在Android应用程序中实现USB通信: 1. 添加USB权限和特性声明 首先,需要在AndroidMani…

Llama3中文聊天项目全能资源库

Llama3 中文聊天项目综合资源库,集合了与Lama3 模型相关的各种中文资料,包括微调版本、有趣的权重、训练、推理、评测和部署的教程视频与文档。1. 多版本支持与创新:该仓库提供了多个版本的Lama3 模型,包括基于不同技术和偏好的微…

STK12 RPO模块学习(2)

一、Coast RPO Sequence 这个序列运行卫星直到它达到了下面三个条件之一。 1)截至时间。2)圈数到达了限制。3)其他条件,比如近地点。 默认情况下,Astrogator使用“Earth HPOP Default v10”预报器。你能够修改呈其他修改器。下…

【Linux线程(一)】线程初理解

前言: (一)线程的概念 (二)线程的理解 (三)示例 (四)线程优缺点 线程的优点 线程的缺点 (五)线程和进程的切换 1.线程的切换 2.进程的切换…

【Docker学习】重启容器的docker restart

命令: docker container restart 描述: 重启一个或多个容器 用法: docker container restart [OPTIONS] CONTAINER [CONTAINER...] 别名: docker restart(docker的一些命令可以简写,docker restart就等同于docker cont…

Vue3响应式原理实现与track和trigger依赖收集和触发依赖

前言 Vue的响应式系统是基于数据劫持加发布订阅者模式实现的,数据响应式就是建立响应式数据与依赖的关系 (调用了响应式数据的操作之间的关系) vue2使用Object.defineProperty进行数据拦截,而Vue3使用Proxy进行数据拦截是es6中新加的api,比Object.defineProperty解…

对Windows超融合S2D的一些补充

先说一个不知道算不算BUG的例子,下面这个存储池是用两台服务器各2块10G建立的,除去系统保留的部分,显示还有13G可用。 但如果使用其新建虚拟磁盘会显示可用的空间为0 然后我又各增加了一块10G硬盘进池,变成了可用空间为30.5GB …

JavaEE之线程(4)——线程安全、线程安全的原因,synchronized关键字

前言 在本栏的前面的内容中,我们介绍了线程的创建、Thread 类及常见方法、线程的状态,今天我们来介绍一下关于线程的另一个重点知识——线程安全。 一、线程安全 基本概念: 线程安全的确切定义是复杂的,但我们可以这样认为&…

哪里可以找到可靠的代理IP?

需要代理来访问受限制的网站或改善您的在线隐私?别再犹豫了!在这篇博文中,我们将探讨您可以使用的选项,并提供有关在哪里获取代理的指导。 首先,让我们了解什么是代理及其工作原理。代理充当您的设备和互联网之间的中介…

mybatis 设置字段值为null 不生效不起作用 解决办法

mybatis 设置字段值为null 不生效不起作用 解决办法 问题 updateObj.setPublishTime(null);int update protocolMapper.updateById(updateObj);执行之后,不生效,数据库里仍有值 解决 在需要设置null的字段加上 TableField(updateStrategy FieldStra…

《Mybatis》系列文章目录

什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff…

【触想智能】无风扇工控一体机的优点与定制要求分析

随着工业自动化的不断推进,工控一体机作为自动化生产的核心设备,在工业生产中发挥着越来越重要的作用。 在工控一体机的设计中,散热是一个非常关键的问题,而无风扇工控一体机的出现为解决这个问题提供了新方法。 无风扇工控一体机…

Web常见的攻击方式及其防御策略

随着互联网技术的快速发展,Web应用已成为我们日常生活和工作中不可或缺的一部分。然而,Web应用也面临着各种安全威胁和攻击。了解这些常见的攻击方式,并采取有效的防御策略,对于保护Web应用的安全至关重要。 一、常见的Web攻击方…

Python lambda函数

Python lambda函数 Python中的lambda函数,用于创建简洁的匿名函数。Lambda函数通常用于在需要函数作为参数的上下文中,以及在需要临时定义简单函数的地方。 下面是一些关于lambda函数的基本知识和用法: 1. lambda函数的基本语法 lambda argum…

Rx(Reactive Extensions)的由来

既然我们已经介绍了响应式编程,现在是时候了解我们的明星了:响应式扩展,通常简称为Rx。微软开发了Reactive扩展库,使其易于处理事件流和数据流。在某种程度上,时变值本身就是一个事件流;每个值更改都是一种类型的事件它会更新依赖…

【AHK】固定wps的窗口大小/解决wps2019版重新打开窗口会缩小至100*100的bug

解决办法就是每一次点击lbutton添加触发事件,同样也可以换成其他快捷键 #IfWinActive ahk_exe wpp.exe ~lbutton:: justfyWin(ahk_exe wpp.exe) #IfWinActive#IfWinActive ahk_exe wps.exe ~lbutton:: justfyWin(ahk_exe wps.exe) return #IfWinActive#IfWinActive …

使用Docker安装Nginx

一、Nginx介绍 Nginx 是一款高性能的开源 Web 服务器和反向代理服务器,具有高效能、高稳定性、低资源消耗等优点。可以处理大量并发请求,支持多种协议,还能实现负载均衡、缓存等功能,在互联网应用中被广泛使用。在Nginx中&#xf…