from pythonjsonlogger import jsonlogger
file_path = os.path.abspath(os.path.dirname(__file__)) + ‘/apps_price.log’
保存这个目录
格式如下
{"date":"2023-04-17T10:51:07.866","err_log":err}
import logging import os from datetime import datetime from pythonjsonlogger import jsonlogger # 创建 logger 实例并设置日志级别为 INFO logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) # 创建文件处理器,将日志写入指定的文件路径 file_path = os.path.abspath(os.path.dirname(__file__)) + '/apps_price.log' file_handler = logging.FileHandler(filename=file_path, mode='a') file_handler.setLevel(logging.INFO) # 创建自定义 JSON 格式化器 class CustomJsonFormatter(jsonlogger.JsonFormatter): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def add_fields(self, log_record, record, message_dict): super().add_fields(log_record, record, message_dict) # 将时间戳转换为 ISO 8601 格式 log_record['date'] = datetime.utcfromtimestamp(record.created).isoformat() json_formatter = CustomJsonFormatter('%(err_log)s') # 设置文件处理器的格式化器为自定义 JSON 格式化器 file_handler.setFormatter(json_formatter) # 将文件处理器添加到 logger 实例中 logger.addHandler(file_handler) # 记录日志 err_log = "something went wrong" logger.error({"err_log": err_log}) logger.info({"message": err_log})
你可以使用 Python 自带的 logging 模块和 pythonjsonlogger 来记录 log,并将 log 保存到本地。以下是示例代码:
import logging import os import json from pythonjsonlogger import jsonlogger # 创建 logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建文件 handler log_file_path = os.path.abspath(os.path.dirname(__file__)) + '/apps_price.log' file_handler = logging.FileHandler(log_file_path) # 创建 json formatter json_formatter = jsonlogger.JsonFormatter('%(asctime)s %(message)s') # 添加 json formatter 到文件 handler file_handler.setFormatter(json_formatter) # 添加文件 handler 到 logger logger.addHandler(file_handler) # 记录 log try: # 在这里执行你的代码 result = 1 / 0 # 抛出除以 0 的异常 except Exception as e: # 记录异常信息到 log logger.error({'err_log': str(e)}, exc_info=True)
在这个示例中,我们创建了一个 logger,然后创建了一个文件 handler,并将其添加到 logger 中。我们还创建了一个 json formatter,并将其添加到文件 handler 中。最后,我们记录了一个异常,将其转换为 json 格式,并记录到文件中。
这个例子中的 log 格式与你所描述的格式略有不同,但是更加标准和易读。如果你希望使用你所描述的格式,只需将 json_formatter 的格式字符串改为 {“date”:”%(asctime)s”,”err_log”:%(message)s}。