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}。