首页 > 编程语言 >【Python常用模块之logging模块】---日志输出功能(示例代码)

【Python常用模块之logging模块】---日志输出功能(示例代码)

时间:2023-12-24 20:34:57浏览次数:46  
标签:输出 logging 示例 handler 模块 logger 日志

title:  【Python常用模块之logging模块】---日志输出功能(示例代码)
date:  2023-12-24  20:14:06 
updated: 2023-12-24 20:23:00
description:  【Python常用模块之logging模块】---日志输出功能(示例代码)
cover: 
      https://pythonjishu.com/tdcgatffvrvdoop/

2023年6月5日 下午9:34 • python
一、Python常用模块logging——日志输出功能

Python有一个称之为logging的标准库,可对Python程序进行日志输出,并输出至控制台或者存储于文件中。日志输出可分为不同的等级(debug、info、warning、error、critical),并可对输出进行格式化。logging模块是Python中非常常用的一个模块,几乎所有的应用程序都需要记录日志。下面介绍一下logging模块常用的功能和代码示例。

二、使用举例

(1)基本使用示例

下面是一个基本的logger使用示例代码:

import logging

def test_log():
# 日志文件存放路径
LOG_FILE_PATH = 'test.log'

# getLogger获取日志logger
logger = logging.getLogger()

# 设置日志记录等级
logger.setLevel(logging.INFO)

# 创建输出格式:时间、日志等级、日志内容
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

# 设置控制台输出
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)

# 设置文件输出
file_handler = logging.FileHandler(filename=LOG_FILE_PATH, mode='a')
file_handler.setFormatter(formatter)

# 将设置好的输出处理器添加到logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 进行日志输出
logger.info('Hello, world!')

test_log()
代码说明:

getLogger获取logger对象;
设置日志记录等级为INFO,即输出INFO、WARNNING、ERROR、CRITICAL等级的日志;
设定日志输出格式,并设置表现形式(这里为时间、日志等级、日志内容);
设置控制台输出和文件输出;
利用addHandler把已经设置好输出格式的控制台输出和文件输出,加入到logger中;
最后利用logger.info、logger.warning、logger.error、logger.critical等方法输出日志。
(2)记录不同等级的日志

下面介绍如何记录不同等级的日志。

编写日志记录器

logger = logging.getLogger('daily_logger')
logger.setLevel(logging.DEBUG)

创建handler(记录日志等级 >= DEBUG)

fh = logging.FileHandler('debug.log')
fh.setLevel(logging.DEBUG)

创建handler(记录日志等级 >= INFO)

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

创建formatter

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

添加formatter到handler

fh.setFormatter(formatter)
ch.setFormatter(formatter)

添加handler到logger

logger.addHandler(fh)
logger.addHandler(ch)

几种日志输出方式

logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
代码说明:

getLogger获取logger对象;
设置日志记录等级为DEBUG,即输出DEBUG、INFO、WARNNING、ERROR、CRITICAL等级的日志;
创建记录DEBUG级别日志的文件输出handler;
创建记录INFO级别日志的控制台输出handler;
创建日志formatter;
设置handler的formatter;
利用addHandler把已经设置好输出格式的控制台输出和文件输出,加入到logger中;
最后利用logger.debug、logger.info、logger.warning、logger.error、logger.critical等方法输出日志。其中output输出方式可以在handler中设置。
三、总结

以上是Python中日志输出功能的介绍和示例,logging模块提供了丰富的日志输出功能,灵活的应用logging模块可以实现简单的日志输出和复杂的日志分析与统计等功能。

标签:输出,logging,示例,handler,模块,logger,日志
From: https://www.cnblogs.com/queryH/p/17924815.html

相关文章

  • 【python常用模块之sys模块】---系统模块(sys)
    title:【python常用模块之sys模块】---系统模块(sys)date:2023-12-2419:54:06updated:2023-12-2420:05:00description:【python常用模块之sys模块】---系统模块(sys)cover:http://www.tuohang.net/article/277594.htmlsys模块“sys”即“system”,“系统......
  • 【python常用模块之subprocess模块】---subprocess模块
    title:【python常用模块之subprocess模块】---subprocess模块date:2023-12-2418:54:06updated:2023-12-2419:50:00description:【python常用模块之subprocess模块】---subprocess模块cover:https://www.cnblogs.com/xxpythonxx/p/17625032.htmlsubproc......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、Jdbc/mysql示例1、maven依赖2、实现1)、userbean2)、内部匿名类实现3)、lambda实现4)、普通继承RichSinkFunction实现5)、完整代码3、验证本文介绍了Flink将数据sink到mysql中,其实是通过jdbc来将数据sink到rmdb中,mysql是一个常见的数据库,故......
  • Python教程(17)——python模块是什么?python模块详解
    Python模块简介模块是一个包含了Python定义和语句的文件,可用于将功能组织成可重用和可维护的代码块。每个Python文件都可以作为一个模块,模块可以包含变量、函数、类或可执行代码。通过使用模块,我们可以将代码分离成逻辑单元,促进模块化编程。所以我们可以简单的理解为,一个py文件就......
  • AntDesignBlazor示例——Modal表单
    本示例是AntDesignBlazor的入门示例,在学习的同时分享出来,以供新手参考。示例代码仓库:https://gitee.com/known/BlazorDemo1.学习目标创建Modal表单编辑数据创建Table操作列2.创建Modal表单1)新增按钮和Modal组件打开天气页面Weather.razor文件,按照如下步骤添加新增按钮......
  • Python函数的使用和示例
    在Python中,函数是一种组织和复用代码的重要方式。函数可以帮助你将代码分解成小的、可管理的部分,并且可以在不同的地方重复使用这些代码。这里是一个简单的Python函数的示例:函数定义与使用定义一个函数:函数以def关键字开始,后跟函数名和圆括号()。圆括号内可以包含参数,也可以为空。......
  • 【江鸟中原】ArkUI组件示例
    学习了一段鸿蒙课,觉得有必要晒一晒自己的进步。通过对ArkUI的学习,我学会了它主要分为基础组件、容器和弹窗。下面我主要对基础组件的按钮和文本进行分析,希望对学习鸿蒙开发的同学有帮助。1.在DevEcoStudio中创建一个新项目2.在main下面的pages文件夹下建立ButtonPage.ets项目项目......
  • re | 通过PEB遍历进程模块
    re|通过PEB遍历进程模块最近在设计实验,重新写一些代码存一下:使用vc6编译通过。比较好的参考文章:https://www.cnblogs.com/bokernb/p/6404795.html#include<stdio.h>#include<windows.h>/*typedefstruct_LIST_ENTRY{struct_LIST_ENTRY*Flink;struct_LIST_......
  • spring-jcl 模块源码分析
    目录简介源码分析总结简介spring-jcl是spring用于处理日志打印的模块,被spring-core所依赖:jcl全称是JakartaCommonsLogging,是apache提供的日志门面(功能同slf4j),日志门面利用设计模式中的门面模式提供统一的日志接口,实际的日志实现可以任意更换。不过jcl支持的日志实现有限,已......
  • typescript export 同名模块
    Title:AGuidetoImplementing"TypescriptExportSameNameModules"Introduction:Inthisguide,Iwillwalkyouthroughtheprocessofimplementing"Typescriptexportsamenamemodules"foranewcomerinthefield.Wewillstartbyu......