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

yizhihongxing

下面我将介绍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中的namedtuple就是一个很好的选择。namedtuple允许我们定义一个有名字的元组(tuple),元组中的每个元素都有相应的名称和位置。本篇攻略将为大家详细介绍创建和操作Python中的namedtuple。 定义namedtuple 定义namedtuple的首要步骤是导入namedtuple…

    python 2023年5月14日
    00
  • python 经纬度求两点距离、三点面积操作

    Python 经纬度求两点距离、三点面积操作 一、经纬度坐标表示 在 Python 中,通常使用度数(degree)表示经纬度坐标。度数分为整数部分与小数部分,小数部分表示该经度或纬度对参考点(经度为 0°,纬度为 0°,即位于西非迦纳的一个小镇“阿克拉”,也称为“原始子午线”)的相对距离。 例如经度为 116.3974°,表示该点距离“阿克拉”(参考点)1…

    python 2023年6月3日
    00
  • Python 自由定制表格的实现示例

    Python 自由定制表格的实现示例 Python 作为一门非常强大的编程语言,有着丰富的库和工具包。其中,pandas 库提供了一种十分灵活和强大的方式来构建和操作表格。本文将介绍如何使用 pandas 库创建自由定制的表格。本文使用的环境如下: Python 3.8.5 pandas 1.1.3 1. 创建表格 在 pandas 库中,我们可以使用 Da…

    python 2023年6月3日
    00
  • pip报错“ModuleNotFoundError: No module named ‘pip._vendor.msgpack’”怎么处理?

    当使用pip安装Python包时,可能会遇到“ModuleNotFoundError: No module named ‘pip._vendor.msgpack’”错误。这个错误通常是由以下原因之一引起的: pip版本过低:如果您的pip版本过低,则可能会出现此错误。在这种情况下,需要升级pip版本。 损坏的pip安装:如果您的pip安装已损坏,则可能会出现…

    python 2023年5月4日
    00
  • python 梯度法求解函数极值的实例

    Python 梯度法求解函数极值的实例主要包括以下几个步骤: 定义要求极值的函数 首先需要定义一个要求极值的函数,以本例为例,我们选用的函数是 Rosenbrock 函数,其公式为: $$ f(x,y) = (1 – x) ^ 2 + 100(y – x^2) ^ 2 $$ 其中,变量 x 和 y 是自变量,函数值是因变量。 代码如下: def rosenb…

    python 2023年6月3日
    00
  • Python高并发解决方案实现过程详解

    Python高并发解决方案实现过程详解 在使用Python进行高并发处理时,可以使用多线程、多进程等多种方式来提高程序运行效率和并发能力。下面将针对Python高并发解决方案的实现过程进行详解。 多线程实现方式 多线程是其中一种较为常用的高并发解决方案。在Python中,可以使用threading模块来实现多线程。其使用方法如下所示: import thre…

    python 2023年5月19日
    00
  • Pandas多列值合并成一列的实现

    要将 Pandas DataFrame 的多列值合并成一列,可使用“Melt”方法或“Concatenate”方法实现。 Melt方法 Melt 方法是一种 Pandas 数据清洗方式,可将 DataFrame 中的多列值整合为新的一列,操作步骤如下: 导入 Pandas 库: import pandas as pd 创建 DataFrame:例如,如下所示…

    python 2023年6月5日
    00
  • python刷投票的脚本实现代码

    下面我来详细讲解如何实现 Python 刷投票的脚本。 思路 Python 刷票脚本实现的关键是如何模拟用户操作,以达到刷票的效果。一般来说,我们需要模拟以下操作: 打开投票页面; 解析投票页面中的元素,找到投票按钮并点击; 循环执行第 2 步,以达到刷票的效果。 需要注意的是,在实现刷票脚本的过程中,我们必须要遵守网站的法律法规,不能使用该脚本非法获取投票…

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