实现Python日志记录的 实践:setup_logger()函数解析
实现Python日志记录的 实践主要包括定义日志记录级别、格式化输出和将日志记录写入文件等步骤。以下是一个名为setup_logger()的函数,用于设置日志记录的各个方面,并附带使用示例。
import logging
def setup_logger(log_file='log.txt', log_level=logging.INFO):
# 创建Logger对象
logger = logging.getLogger(__name__)
logger.setLevel(log_level)
# 创建FileHandler对象,将日志写入文件
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(log_level)
# 创建StreamHandler对象,将日志打印到控制台
stream_handler = logging.StreamHandler()
stream_handler.setLevel(log_level)
# 设置日志的格式化输出
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)
# 将FileHandler和StreamHandler添加到Logger对象中
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
return logger
if __name__ == '__main__':
# 使用示例
logger = setup_logger(log_file='my_log.txt', log_level=logging.DEBUG)
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
上述代码中的setup_logger()函数有两个可选参数:log_file和log_level。log_file用于指定日志文件的路径和名称,默认为log.txt;log_level用于设置日志的记录级别,默认为logging.INFO。
在setup_logger()函数内部,我们首先创建一个Logger对象,并指定日志记录级别为传入的log_level。然后,我们创建一个FileHandler对象和一个StreamHandler对象,帮助我们将日志记录分别写入文件和打印到控制台。这两个对象的记录级别也设为传入的log_level。
接下来,我们定义了日志记录的格式化输出方式。在上述示例中,我们使用了一个简单的格式化字符串包含时间戳、日志名称、日志级别和日志消息。
最后,我们将FileHandler和StreamHandler对象添加到Logger对象中,然后返回该Logger对象。这样,我们就可以在其他地方使用该Logger对象来记录日志。
在示例代码的if __name__ == '__main__'部分,我们首先调用setup_logger()函数来获取名为logger的Logger对象,这里我们指定日志文件名称为my_log.txt,记录级别为logging.DEBUG。
然后,我们使用logger对象记录一条调试消息、一条信息消息、一条警告消息、一条错误消息和一条严重消息。根据传递给setup_logger()函数的记录级别,日志文件和控制台将只显示等于或高于该级别的消息。
通过使用setup_logger()函数,我们可以轻松地设置日志记录的级别、格式和输出方式,并且灵活地适应不同的需求。
