我在将日志发送到 Azure Application Insights 时遇到很大困难。当 AzureLogHandler 初始化并添加到 app.py 中的子记录器时,它可以正常工作。但是,当我去创建一个新的记录器实例时,问题开始于app.py之外,日志不会发送到 Azure。样本:
# app.py
logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string=""))
logger.info("This is emitted")
# main.py
logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string=""))
logger.info("This is NOT emitted")
我设法让它工作的唯一方法是导入我在app.py中创建的记录器实例,这是次优的:
# sub-optimal - does not permit me to create a log hierarchy
# main.py
from app.py import logger
logger.info("This works but restricts me")
理想情况下,我希望在尽可能少地干扰项目的情况下实现 opencensus AzureLogHandler,例如在开始时将 AzureLogHandler 添加到根记录器,然后派生所有子记录器,而无需单独附加处理程序:
# app.py
logging.basicConfig(handlers=[AzurelogHandler(connection_string=""))
logger = logging.getLogger(__name__)
logger.debug("so simple!")
# main.py
logger = logging.getLogger(__name__)
logger.debug("so simple!")
注意:该解决方案必须与异步 FastAPI 一起使用。这似乎使事情变得复杂,因为我已经为 Flask 和其他服务很好地实现了这个。
谢谢!