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

Python中使用logging模块进行程序监控

发布时间:2024-01-09 23:06:05

在Python中,可以通过使用logging模块来进行程序的监控和日志记录。该模块提供了丰富的功能,可以方便地创建日志记录器、设置日志级别、输出日志消息等。

下面是一个使用logging模块进行程序监控的例子:

import logging

# 创建并配置日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 创建文件处理器,并设置日志输出格式
file_handler = logging.FileHandler('logfile.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

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

# 定义一个函数,将其作为装饰器使用,用于记录函数调用和返回值
def log_function_call(func):
    def wrapper(*args, **kwargs):
        logger.info(f'Calling function {func.__name__} with arguments {args}, {kwargs}')
        result = func(*args, **kwargs)
        logger.info(f'Function {func.__name__} returned {result}')
        return result
    return wrapper

# 使用装饰器记录函数调用和返回值
@log_function_call
def add(a, b):
    return a + b

@log_function_call
def multiply(a, b):
    return a * b

# 调用函数,并记录日志信息
add(2, 3)
multiply(4, 5)

以上代码中,首先创建了一个日志记录器logger,并设置其日志级别为INFO。然后创建了一个文件处理器file_handler,并将其设置为输出日志的格式。接着将文件处理器添加到日志记录器中。

然后定义了一个装饰器log_function_call,用于记录函数的调用和返回值。该装饰器内部创建了一个包装函数wrapper,使用logger记录了函数的调用和返回值,并最终返回结果。

最后,使用装饰器log_function_call对两个函数add和multiply进行装饰,用于记录它们的调用和返回值。

运行以上代码,会在控制台输出函数的调用和返回日志信息,并将其写入文件logfile.log中。例如,add(2, 3)会输出以下日志信息:

2022-01-01 10:00:00,000 - __main__ - INFO - Calling function add with arguments (2, 3), {}
2022-01-01 10:00:00,000 - __main__ - INFO - Function add returned 5

通过使用logging模块,可以方便地进行程序的监控和日志记录。可以根据需求,设置不同的日志级别,输出到不同的地方(如控制台、文件、网络等),以及自定义日志消息的格式。