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

确保在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 scrapy框架中Request对象和Response对象的介绍

    以下是关于“Python Scrapy 框架中 Request 对象和 Response 对象的介绍”的完整攻略: Python Scrapy 框架中 Request 对象和 Response 对象的介绍 在 Scrapy 框架中,Request 对象和 Response 对象是非常重要的概念。Request 对象用于发送 HTTP 请求,而 Respons…

    python 2023年5月15日
    00
  • Python标准库datetime之datetime模块用法分析详解

    Python标准库datetime之datetime模块用法分析详解 介绍 datetime 模块是 Python 内置的标准库,用于处理日期和时间相关的操作,它支持年、月、日、小时、分钟、秒、微妙等元素,并且包含了多种我们可以利用的类和函数。 datetime 模块提供的类有: date:处理日期,年月日 time:处理时间,时分秒 datetime:日期…

    python 2023年5月14日
    00
  • Python发送手机动态验证码代码实例

    下面我会详细讲解“Python发送手机动态验证码代码实例”的完整攻略。文中会以两条示例分别说明。 1. 准备工作 在发送手机动态验证码之前,我们需要做一些准备工作。具体如下: 1.1 注册云片网账号 首先,我们需要注册云片网的账号。云片网是一家专门提供短信服务的公司,提供了丰富的API接口,使用非常方便。我们可以在官网(https://www.yunpian…

    python 2023年5月31日
    00
  • python实现记事本功能

    以下是Python实现记事本功能的完整攻略。 步骤一:创建GUI界面 要实现记事本功能,首先需要创建GUI界面。可以使用Python中内置的Tkinter库来创建GUI界面。 示例代码: import tkinter as tk root = tk.Tk() # 设置窗口大小 root.geometry("500×500") # 设置窗口…

    python 2023年5月19日
    00
  • python高手之路python处理excel文件(方法汇总)

    标题:Python高手之路:Python处理Excel文件(方法汇总) 本文将介绍多种方法使用Python处理Excel文件。主要包括三种常见的Python第三方库(pandas、openpyxl、xlrd/xlwt),以及一种使用comtypes实现的win32com方法。下面分别进行详细讲解。 一、 Pandas Pandas是Python数据分析中使用…

    python 2023年5月13日
    00
  • 如何使用Python从数据库中获取BLOB类型的数据并将其保存到本地文件中?

    以下是如何使用Python从数据库中获取BLOB类型的数据并将其保存到本地文件中的完整使用攻略。 使用Python从数据库中获取BLOB类型的数据并将其保存到本地文件中的前提条件 在Python中从数据库获取BLOB类型的数据并将其保存到本地文件中前,需要保已经安装并启动支持数据的,例如MySQL或PostgreSQL,并且需要安装Python的相数据库驱动…

    python 2023年5月12日
    00
  • Python 瓶安装

    【问题标题】:Python Bottle installationPython 瓶安装 【发布时间】:2023-04-06 05:38:01 【问题描述】: 我是 Python 新手。我下载了“bottle.py”并将其放在我的项目目录中。我创建了一个简单的 “helloworld.py” 。 Helloworld.py 是 from bottle impo…

    Python开发 2023年4月7日
    00
  • 基于Python实现给喜欢的主播自动发弹幕

    这里我们将讨论如何使用 Python 编写脚本,实现给喜欢的主播自动发弹幕的功能。在本文中,我们将使用 Selenium WebDriver 和 Chrome 浏览器来实现模拟浏览器操作,自动发送弹幕。 1.安装 Selenium WebDriver 和 Chrome 浏览器 首先,我们需要安装 Selenium WebDriver 和 Chrome 浏览器…

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