Loguru 简单如打印,灵活如日志记录
Loguru Simple as printing, flexible as logging
简单的日志记录解决方案,适用于您的数据科学项目

最初发表于2023年7月17日,网址为 https://mathdatasimplified.com。
在数据科学项目中为什么要使用日志记录?
数据科学家经常使用print函数来调试他们的代码。然而,随着print语句数量的增加,由于缺乏行号或函数名称,很难确定输出来自哪里。
def encode_data(data: list): print("编码数据") data_map = {'a': 1, 'b': 2, 'c': 3} print(f"数据映射: {data_map}") return [data_map[num] for num in data]def add_one(data: list): print("加一") return [num + 1 for num in data]def process_data(data: list): print("处理数据") data = encode_data(data) print(f"编码后的数据: {data}") data = add_one(data) print(f"加一后的数据: {data}")process_data(['a', 'a', 'c'])
输出:
处理数据编码数据数据映射: {'a': 1, 'b': 2, 'c': 3}编码后的数据: [1, 1, 3]加一加一后的数据: [2, 2, 4]
将代码投入生产时,手动逐个删除所有调试行可能是一项繁琐且容易出错的任务。
def encode_data(data: list): print("编码数据") data_map = {'a': 1, 'b': 2, 'c': 3} return [data_map[num] for num in data]def add_one(data: list): print("加一") return [num + 1 for num in data]def process_data(data: list): print("处理数据") data = encode_data(data) data = add_one(data)process_data(['a', 'a', 'c'])
日志记录通过允许数据科学家为其输出指定不同的级别(调试、信息、警告、错误)提供了完美的解决方案。
def encode_data(data: list): logger.info("编码数据") data_map = {'a': 1, 'b': 2, 'c': 3} logger.debug(f"数据映射: {data_map}") return [data_map[num] for num in data]def add_one(data: list): logger.info("加一") return [num + 1 for num in data]def process_data(data: list): logger.info("处理数据") data = encode_data(data) logger.debug(f"编码后的数据: {data}") data = add_one(data)...