如何实现Odoo 13的XMLRPC请求与响应全量日志记录?已尝试log_level=debug_rpc_answer无效果
解决Odoo 13完整记录XMLRPC请求与响应的问题
我来帮你搞定Odoo 13里记录完整XMLRPC请求和响应的问题,之前用log_level = debug_rpc_answer没生效大概率是配置没做全,下面是几个亲测有效的方案:
方案1:修正配置文件的完整设置
首先得确保你的配置是正确的,别只加了log_level就完事:
- 确认配置项都放在
[options]区块下,不能乱放在其他自定义区块里 - 除了
debug_rpc_answer,还得配套设置log_handler来确保DEBUG级别的日志能输出,示例配置:[options] log_level = debug_rpc_answer log_handler = :DEBUG - 别忘了重启Odoo服务,让新配置生效
方案2:切换到debug_rpc级别获取完整交互数据
debug_rpc_answer只记录响应内容,如果你要的是请求+响应的完整数据,直接把log_level改成debug_rpc就行:
log_level = debug_rpc
重启后去查看Odoo的日志文件(默认在/var/log/odoo/,或者启动时指定的路径),就能看到XMLRPC的请求参数、响应结果这些完整信息了。
方案3:自定义代码拦截日志(适合精细化需求)
如果默认日志级别还是满足不了你的要求,比如要记录原始的HTTP报文,可以写个小模块来拦截:
- 创建一个新模块,在
__init__.py里加入这段代码:
import logging from odoo.http import XmlRPCRequest _logger = logging.getLogger(__name__) # 保存原始的dispatch方法 original_dispatch = XmlRPCRequest.dispatch def custom_xmlrpc_dispatch(self): # 记录原始请求数据 _logger.debug("完整XMLRPC请求报文: %s", self.httprequest.data.decode('utf-8')) # 执行原方法获取响应 response = original_dispatch(self) # 记录响应数据 _logger.debug("完整XMLRPC响应报文: %s", response) return response # 替换原方法 XmlRPCRequest.dispatch = custom_xmlrpc_dispatch
- 安装这个模块并重启Odoo,日志里就会输出最原始的请求和响应内容了。
方案4:检查日志路径与权限
有时候配置生效了,但日志没写到你预期的地方:
- 检查配置文件里的
logfile项,确认日志文件的具体路径,比如:logfile = /var/log/odoo/odoo_debug.log - 确保Odoo进程对该路径有写入权限,不然日志会直接输出到控制台或者被系统丢弃
内容的提问来源于stack exchange,提问作者Phu Sanh
相关产品推荐
相关产品推荐

