使用lib.utilsget_logger()函数实现Python程序的调试日志记录
发布时间:2023-12-15 14:58:20
在Python中,我们可以使用logging模块来记录程序的调试日志。然而,对于大型项目来说,为每个模块单独定义一个logger对象并进行配置会变得繁琐。为了简化日志记录的过程,我们可以使用自定义的工具函数get_logger()。
get_logger()函数的实现如下所示:
import logging
def get_logger(name, level=logging.DEBUG, format='%(asctime)s [%(levelname)s] %(message)s', file=None):
logger = logging.getLogger(name)
logger.setLevel(level)
formatter = logging.Formatter(format)
if file:
file_handler = logging.FileHandler(file)
file_handler.setLevel(level)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
这个函数接受四个参数:
- name: logger的名称。
- level: 日志的记录级别,默认为logging.DEBUG。
- format: 日志记录的格式,默认为'%(asctime)s [%(levelname)s] %(message)s'。
- file: 将日志记录到文件的路径,默认为None,表示不记录到文件。
该函数返回一个logger对象,我们可以利用该对象进行日志记录。
使用例子如下:
from lib.utils import get_logger
# 创建一个全局的logger对象
logger = get_logger(__name__, level=logging.DEBUG, file='debug.log')
def func1():
logger.debug('进入了func1函数')
def func2():
logger.debug('进入了func2函数')
def main():
logger.info('程序开始执行')
func1()
func2()
logger.info('程序结束执行')
if __name__ == '__main__':
main()
在这个例子中,我们首先导入了自定义的工具函数get_logger()。接下来,我们通过调用get_logger()函数创建了一个全局的logger对象,并指定了日志记录级别为logging.DEBUG,同时将日志记录到了文件debug.log中。
函数func1()和func2()分别记录了进入函数的调试信息,而在main()函数中,我们使用logger.info()记录了程序的开始和结束信息。
当我们运行这段代码时,会将日志记录到控制台,并同时将记录写入到文件debug.log中。
总结来说,利用get_logger()函数可以更简洁地记录Python程序的调试日志。我们可以通过设置不同的日志级别和输出路径来满足不同的需求。
