python 通过logging写入日志到文件和控制台的实例

下面我将介绍Python通过logging写入日志到文件和控制台的实例,具体步骤如下:

1.导入logging模块

import logging

2.设置日志格式

以时间戳、日志级别、模块名称、行号、线程ID、日志信息为格式,具体可根据需求自定义:

LOG_FORMAT = "%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] [%(thread)d] - %(message)s"
logging.basicConfig(format=LOG_FORMAT)

3.创建logger对象

在logging模块中,有一个重要的类就是Logger,主要作用是进行日志的记录和输出。创建Logger对象并设置日志记录级别(可选DEBUG、INFO、WARNING、ERROR、CRITICAL):

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)  # 设置日志记录级别为DEBUG

4.设置处理器

我们可以对日志进行分级处理,并将不同级别的日志分别输出或写入到不同的地方,比如写入到文件和控制台。

4.1.写入日志到文件

使用FileHandler将日志写入到文件中,可以设置文件名、编码等参数:

# 创建handler对象并设置日志级别、日志格式、写入文件名和编码
file_handler = logging.FileHandler(filename="log.txt", encoding="utf-8")
file_handler.setLevel(logging.WARNING)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))

# 将handler添加到logger中
logger.addHandler(file_handler)

4.2.写入日志到控制台

使用StreamHandler将日志输出到控制台,默认输出到标准输出流(sys.stderr)中,也可以设置输出流:

# 创建handler对象并设置日志级别、日志格式和输出流
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter(LOG_FORMAT))

# 将handler添加到logger中
logger.addHandler(console_handler)

5.记录日志信息

使用logger对象记录日志信息,可以使用debug、info、warning、error、critical等方法进行不同级别的日志记录:

logger.debug("This is a debug log.")
logger.info("This is an info log.")
logger.warning("This is a warning log.")
logger.error("This is an error log.")
logger.critical("This is a critical log.")

示例说明

示例1:将日志写入到文件和控制台中

import logging

LOG_FORMAT = "%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] [%(thread)d] - %(message)s"
logging.basicConfig(format=LOG_FORMAT)

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

file_handler = logging.FileHandler(filename="log.txt", encoding="utf-8")
file_handler.setLevel(logging.WARNING)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter(LOG_FORMAT))

logger.addHandler(file_handler)
logger.addHandler(console_handler)

logger.debug("This is a debug log.")
logger.info("This is an info log.")
logger.warning("This is a warning log.")
logger.error("This is an error log.")
logger.critical("This is a critical log.")

运行后,会在项目根目录生成一个名为log.txt的文件,并在控制台输出日志信息。

示例2:将日志写入到文件中

import logging

LOG_FORMAT = "%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] [%(thread)d] - %(message)s"
logging.basicConfig(format=LOG_FORMAT)

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

file_handler = logging.FileHandler(filename="log.txt", encoding="utf-8")
file_handler.setLevel(logging.WARNING)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))

logger.addHandler(file_handler)

logger.debug("This is a debug log.")
logger.info("This is an info log.")
logger.warning("This is a warning log.")
logger.error("This is an error log.")
logger.critical("This is a critical log.")

运行后,会在项目根目录生成一个名为log.txt的文件,其中只包含级别为WARNING及以上的日志信息。

以上就是Python通过logging写入日志到文件和控制台的实例攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 通过logging写入日志到文件和控制台的实例 - Python技术站

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

相关文章

  • 编写多线程Python服务器 最适合基础

    以下是“编写多线程Python服务器 最适合基础”的完整攻略。 1. 概述 本文将介绍如何使用 Python 编写一个多线程服务器,并提供两个具体示例说明,让您更好地理解多线程服务器的实现过程。 2. 多线程服务器的原理 多线程服务器是通过创建多个线程来同时处理多个客户端连接请求,从而提高服务器的并发处理能力。当有新的客户端连接请求到来时,服务器会创建一个新…

    python 2023年5月18日
    00
  • 详解Python pygame安装过程笔记

    详解Python Pygame安装过程笔记 安装前的准备工作 在开始安装Python Pygame之前,我们需要进行一些准备工作: 下载并安装Python解释器。官网下载链接:https://www.python.org/downloads/ 安装pip。在命令行窗口中输入以下命令: python -m ensurepip –default-pip 更新p…

    python 2023年5月14日
    00
  • Python request设置HTTPS代理代码解析

    以下是关于“Python request设置HTTPS代理代码解析”的完整攻略: Python request设置HTTPS代理代码解析 在Python中,我们可以使用requests库发送HTTP请求。如果需要设置HTTPS代理,我们可以使用proxies参数。以下是Python request设置HTTPS代理代码解析的攻略。 设置单个HTTPS代理 我…

    python 2023年5月15日
    00
  • Python实现查找匹配项作处理后再替换回去的方法

    Python实现查找匹配项作处理后再替换回去的方法,一般可以利用正则表达式(Regular Expression)的相关内容实现。下面将详细讲解实现该方法的完整攻略。 步骤一:导入re模块 在使用Python实现正则表达式相关功能之前,需要先导入Python的re模块: import re 步骤二:定义正则表达式 根据需求,我们需要定义一个正则表达式来匹配目…

    python 2023年6月3日
    00
  • 详解Python Socket网络编程

    详解Python Socket网络编程 什么是Socket Socket是网络编程中的一个概念,它指的是一组用于网络通信的API。我们可以用Socket在网络上发送数据和接收数据。 在Python中,我们可以使用socket模块来创建和操作Socket。socket模块提供了一个类来表示一个网络套接字socket对象。 Socket的工作原理 Socket通…

    python 2023年6月3日
    00
  • Python中列表与元组的乘法操作示例

    下面是Python中列表与元组的乘法操作示例的完整攻略。 列表与元组的乘法操作 列表和元组在Python中都支持乘法操作(重复操作)。这个操作会重复列表或元组中的元素,产生一个新的列表或元组。 列表的乘法操作示例 下面是一个列表乘法操作的示例: fruits = [‘apple’, ‘banana’, ‘orange’] print(fruits * 3) …

    python 2023年5月13日
    00
  • Python错误与异常处理

    Python 错误与异常处理 – 完整攻略 Python 是一门强大的编程语言,但是编写代码时难免会出现错误和异常。这篇文档将讲解 Python 中的错误和异常处理。 异常 Python 中的异常是指运行时出现的错误。当程序出现异常时,程序将停止运行并输出错误信息。Python 中有许多内置的异常类,例如 ZeroDivisionError、TypeErro…

    python 2023年5月13日
    00
  • python中关于时间和日期函数的常用计算总结(time和datatime)

    一、time模块 1.1、time模块简介 time模块提供了时间处理函数,包括获取当前时间、格式化时间、休眠等操作。主要包含以下几个常用函数: time(): 获取当前时间戳,即从1970年1月1日零时开始到当前时间的秒数。 localtime(): 获取当前本地时间,返回一个包含年、月、日、时、分、秒等信息的time.struct_time对象。 mkt…

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