Loggers not updated: extra variable sessionId is not updated in temp log file

问题描述 投票:0回答:0

我创建了三个文件。 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 ": "完成"}

python python-3.x logging keylogger
© www.soinside.com 2019 - 2024. All rights reserved.