欢迎访问宙启技术站
智能推送

Python中使用logging模块实现日志搜集和分析

发布时间:2024-01-09 23:08:45

在Python中,可以使用logging模块实现日志的搜集和分析。logging模块是Python标准库中的一个模块,提供了一个灵活的日志记录系统,可以记录日志到多个目标,并可以根据不同的级别进行过滤和格式化。

下面是一个使用logging模块实现日志搜集和分析的示例:

import logging

# 配置日志记录
logging.basicConfig(
    level=logging.INFO,  # 设置日志级别为INFO
    filename='example.log',  # 指定日志文件路径
    format='%(asctime)s - %(levelname)s - %(message)s',  # 设置日志格式
    datefmt='%Y-%m-%d %H:%M:%S'  # 设置日期时间格式
)

# 创建logger对象
logger = logging.getLogger(__name__)

def divide(a, b):
    try:
        result = a / b
        logger.info('Division successful: {} / {} = {}'.format(a, b, result))
    except ZeroDivisionError as e:
        logger.error('Division failed: {}'.format(e))

divide(10, 0)
divide(10, 2)

上述代码中,首先通过调用basicConfig()函数配置了日志记录参数,其中:

- level参数设置日志级别为INFO,表示只记录INFO级别及以上的日志。

- filename参数指定了日志文件路径为example.log,即日志记录的内容将输出到该文件中。

- format参数设置了日志的格式为%(asctime)s - %(levelname)s - %(message)s,其中%(asctime)s表示日志记录的时间,%(levelname)s表示日志级别,%(message)s表示日志消息。

- datefmt参数设置了时间的格式为%Y-%m-%d %H:%M:%S,即按照年-月-日 时:分:秒的格式记录时间。

接下来,通过调用getLogger()函数创建了一个logger对象,该对象用于进行日志记录。

然后,定义了一个divide()函数,该函数用于进行两个数的除法运算。在函数内部,通过try-except块进行除法运算,并在成功或失败的情况下分别调用logger对象的info()error()方法记录日志。

最后,调用divide()函数进行两次除法运算,分别输入了一个正常的除法运算和一个除零的运算。运行上述代码后会生成一个名为example.log的日志文件,其内容如下:

2022-08-01 10:00:00 - INFO - Division successful: 10 / 2 = 5.0
2022-08-01 10:00:01 - ERROR - Division failed: division by zero

可以看到,日志文件中记录了两条日志,其中一条是除法成功的日志,另一条是除法失败的日志。

通过使用logging模块,我们可以方便地记录日志,以便后续分析和排查问题。另外,logging模块还支持将日志记录到其他目标,如终端输出、邮件等,可以根据实际需求进行配置。