Django项目中Firebase Admin的send_multicast方法无运行日志问题求助
Django 项目 Firebase Admin SDK send_multicast 日志缺失解决方案
1. 调整Firebase Admin SDK日志输出等级
Firebase Admin SDK默认只输出警告及以上级别的日志,底层请求、响应细节默认不会打印,需要在Django的settings.py中添加日志配置,开启DEBUG级日志:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'loggers': { 'firebase_admin': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': True, }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, }
2. 补全响应错误详情打印逻辑
你当前代码仅打印了成功/失败总数,单个token的发送错误详情需要主动遍历返回结果获取,修改后的代码示例如下:
import logging logger = logging.getLogger(__name__) message = messaging.MulticastMessage( data={ 'data': str(self.data) }, tokens=registration_tokens, ) logger.info('待发送消息: %s', message) # 调试阶段可加dry_run=True参数,不会真实推送但返回完整校验结果 response = messaging.send_multicast(message) logger.info('发送结果:成功%s条,失败%s条', response.success_count, response.failure_count) # 打印每个token的发送详情 for idx, resp in enumerate(response.responses): if resp.success: logger.debug('token %s 发送成功,消息ID: %s', registration_tokens[idx], resp.message_id) else: logger.error('token %s 发送失败,错误信息: %s', registration_tokens[idx], resp.exception)
3. 替换print为logging模块输出
生产环境部署时(使用Gunicorn、uWSGI等容器),print输出的内容默认不会被捕获到服务日志中,统一使用logging模块输出才能保证日志可以正常查询。
内容的提问来源于stack exchange,提问作者imran khan
相关产品推荐
相关产品推荐

