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