Python同时向控制台和文件输出日志logging的方法

yizhihongxing

确保在Python的标准库中导入logging模块。

import logging

接下来创建一个logger对象实例化。

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

这里,我们将我们的日志器记录器设置为记录所有级别的消息。您可以选择其他级别作为参数。例如:INFO,WARNING,ERROR。

然后,再创建一个handler,将日志记录到控制台。

console_handler = logging.StreamHandler() # 创建一个控制台输出的日志处理器,用于输出到控制台
console_handler.setLevel(logging.DEBUG) # 可以设置输出等级,这里输出所有等级的日志

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 设置日志格式

console_handler.setFormatter(formatter) # 给控制台日志处理器绑定日志格式,就会往控制台打印日志,符合某个等级的日志就就会输出到控制台

logger.addHandler(console_handler) # 日志记录器添加该控制台日志处理器

在上述代码中,我们使用Formatter类将日志格式化。可以根据需求定义自己的日志格式。

例如,‘%(asctime)s - %(name)s - %(levelname)s - %(message)s’的含义:

  • asctime: 将日志时间转换格式;
  • name: 记录器名称;
  • levelname: 日志等级名称;
  • message: 实际日志内容。

现在,如果想将日志记录到文件中,我们可以添加另一个handler,使日志输出到文件中。

file_handler = logging.FileHandler('example.log') # 创建一个日志文件处理器,可以将日志保存到文件中
file_handler.setLevel(logging.DEBUG)

file_handler.setFormatter(formatter) # 给文件日志处理器绑定日志格式,就会往日志文件写入符合某个等级的日志记录

logger.addHandler(file_handler) # 日志记录器添加该文件日志处理器

在每次进行日志记录时,我们只需要使用打印语句,将日志信息记录到我们的logger中,然后它将自动将日志信息记录到两个位置—— 控制台和文件中。

logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')

完整示例代码:

import logging

def main():
    logger = logging.getLogger('my_logger')
    logger.setLevel(logging.DEBUG)

    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)

    file_handler = logging.FileHandler('example.log')
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)

    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')

if __name__ == '__main__':
  main()

输出例子:

  • 控制台
2021-07-30 16:12:42,699 - my_logger - DEBUG - debug message
2021-07-30 16:12:42,699 - my_logger - INFO - info message 
2021-07-30 16:12:42,700 - my_logger - WARNING - warning message 
2021-07-30 16:12:42,700 - my_logger - ERROR - error message 
2021-07-30 16:12:42,700 - my_logger - CRITICAL - critical message 
  • 日志文件 example.log
2021-07-30 16:12:42,699 - my_logger - DEBUG - debug message
2021-07-30 16:12:42,699 - my_logger - INFO - info message 
2021-07-30 16:12:42,700 - my_logger - WARNING - warning message 
2021-07-30 16:12:42,700 - my_logger - ERROR - error message 
2021-07-30 16:12:42,700 - my_logger - CRITICAL - critical message 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python同时向控制台和文件输出日志logging的方法 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Python利用PyPDF2快速拆分PDF文档

    针对“Python利用PyPDF2快速拆分PDF文档”的攻略,我会分为以下几个部分来进行详细讲解: 环境准备 PyPDF2安装 加载PDF文档 拆分文档 示例说明 接下来我会逐一进行讲解。 1. 环境准备 在开始之前,请确保你已经安装好了Python解释器,并且在命令行或终端中可以执行python命令。另外,由于我们要用到PyPDF2库,所以我们需要先安装它…

    python 2023年6月5日
    00
  • python元组的概念知识点

    Python元组的概念知识点 什么是Python元组? Python中的元组(Tuple)是另一种有序、不可变的数据类型。元组是通过圆括号中用逗号分隔的多个值创建的。 与列表类似,元组可以包含任何类型的数据,但是它们不同之处在于元组的内容不能被修改。这使得元组任意长度的序列非常有用。 如何创建和访问元组 创建元组 可以通过将值用逗号分隔和在圆括号中包含它们来…

    python 2023年5月14日
    00
  • windows系统快速安装pytorch的详细图文教程

    下面是详细的攻略: 确定系统和Python版本 安装PyTorch的前提是你已经安装了Python环境。同时你需要知道你的操作系统和Python版本。建议使用Python 3以上的版本。接下来将以Windows 10和Python 3.6为例进行说明。 选择安装PyTorch的方式 在安装PyTorch之前,你需要选择一个安装方式,PyTorch支持多种安装…

    python 2023年5月14日
    00
  • Python+Tableau广东省人口普查可视化的实现

    以下是“Python+Tableau广东省人口普查可视化的实现”的完整攻略: 1. 数据获取 1.1 数据来源 数据可以从广东省统计局的网站上获取,包括: 广东省人口普查数据 广东省行政区划数据 我们可以通过 Python 的 requests 库和 bs4 库爬取这些数据。 1.2 爬取数据 请参考以下代码示例: import requests from …

    python 2023年6月3日
    00
  • python3.3使用tkinter开发猜数字游戏示例

    下面是Python3.3使用Tkinter开发猜数字游戏的完整攻略,包含了两个示例说明。 猜数字游戏的完整攻略 1. 简介 猜数字游戏是一种非常经典的游戏,可以作为初学者学习Python GUI编程的练手项目。在这个项目中,我们将使用Python3.3和Tkinter库来实现一个简单的猜数字游戏。 2. 准备工作 在开始编写代码之前,需要先确保你已经正确安装…

    python 2023年6月13日
    00
  • Python实现1-9数组形成的结果为100的所有运算式的示例

    这里是“Python实现1-9数组形成的结果为100的所有运算式的示例”的完整攻略。 需求分析 我们需要找出1-9这9个数字,通过加减乘除等运算,使得它们的运算结果等于100。在这个过程中,我们需要枚举所有的可能性,找到符合条件的表达式。 解决方案 我们可以使用暴力枚举的方法求解,其基本思路是对于所有可能的表达式进行枚举,判断结果是否等于100。由于需要枚举…

    python 2023年6月5日
    00
  • 使用Python做垃圾分类的原理及实例代码附源码

    使用Python做垃圾分类的原理及实例代码附源码 在本攻略中,我们将介绍使用Python做垃圾分类的原理及实例代码,并提供一些示例。 原理 垃圾分类是指将生活垃圾按照一定的分类标准进行分类,以便于垃圾的回收和再利用。使用Python做垃圾分类的原理是通过机器学习算法对垃圾进行分类。 具体来说,我们可以使用Python的机器学习库scikit-learn对垃圾…

    python 2023年5月15日
    00
  • 用PyInstaller把Python代码打包成单个独立的exe可执行文件

    在本攻略中,我们将介绍如何使用PyInstaller将Python代码打包成单个独立的exe可执行文件。我们将提供两个示例,演示如何使用PyInstaller打包一个简单的Python脚本和一个包含GUI界面的Python脚本。 步骤1:安装PyInstaller 在开始之前,我们需要安装PyInstaller。我们可以使用pip命令来安装PyInstall…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部