我创建了三个文件。 api.py 是主文件。我在 constants.py 中将 sessionid 初始化为 None。我能够为 debug API 更新 sessionid 但是当调用 a1() 函数时 sessionid 不会在日志文件中更新。我可以在一个文件中完成它但是 can我们确实使用这三个文件。
常量.py
import logging
import os
from logging.handlers import TimedRotatingFileHandler
from pythonjsonlogger import jsonlogger
# logger object name
logger = logging.getLogger("temp")
# Formatting the log as json
formatter = jsonlogger.JsonFormatter()
# log file path, read it from environment variable so product can decide where to save the log
#log_file = os.getenv('LOG_FILE_PATH', "./temp.log")
# File Handler to set mode and encoding
file_handler = logging.FileHandler("./temp.log", 'w', 'utf-8')
# Adding extra parameter to the log format
sessionId = None
extra = {"sessionId": sessionId}
file_handler.setFormatter(jsonlogger.JsonFormatter('%(asctime)s, %(levelname)-8s %(sessionId)-8s [%(filename)s:%(lineno)d] %(message)s'))
# Add file handler to the logger
logger.addHandler(file_handler)
logger.setLevel(logging.DEBUG)
api.py
from constants import logger
import logging
from evaluate import a1
def api():
global logger
sessionId = "A213se"
#print("*********-",sessionId,file=sys.stderr,flush=True)
extra = {"sessionId": sessionId}
# It's important to get the logger and make the change
logger = logging.getLogger("temp")
logger = logging.LoggerAdapter(logger, extra)
logger.debug("API")
return a1()
final = api()
评估.py
import logging
logger = logging.getLogger("temp")
def a1():
global logger
logger.info("evaluation")
a =b1()
logger.info("Done")
return "Dummy"
def b1():
logger.info("get model")
预期输出: {“asctime”:“2023-03-02 16:16:25,399”,“levelname”:“DEBUG”,“sessionId”:“A213se”,“文件名”:“api.py”,“lineno”: 13、“消息”:“API”} {“asctime”:“2023-03-02 16:16:25,408”,“levelname”:“INFO”,“sessionId”:“A213se”,“文件名”:“evaluate.py”,“lineno”: 7、“留言”:“评价”} {“asctime”:“2023-03-02 16:16:25,414”,“levelname”:“INFO”,“sessionId”:“A213se”,“文件名”:“evaluate.py”,“lineno”: 13、“消息”:“获取模型”} {"asctime": "2023-03-02 16:16:25,419", "levelname": "INFO", "sessionId": "A213se", "filename": "evaluate.py", "lineno": 9, “消息”:“完成”}
获取输出: {“asctime”:“2023-03-02 16:16:25,399”,“levelname”:“DEBUG”,“sessionId”:“A213se”,“文件名”:“api.py”,“lineno”:13, “消息”:“API”} {“asctime”:“2023-03-02 16:16:25,408”,“levelname”:“INFO”,“sessionId”:null,“文件名”:“evaluate.py”,“lineno”:7, “留言”:“评价”} {“asctime”:“2023-03-02 16:16:25,414”,“levelname”:“INFO”,“sessionId”:null,“文件名”:“evaluate.py”,“lineno”:13, “消息”:“获取模型”} {"asctime": "2023-03-02 16:16:25,419", "levelname": "INFO", "sessionId": null, "filename": "evaluate.py", "lineno": 9, "message ": "完成"}