后端调试
日志
用法
import logging
_logger = logging.getLogger(__name__)
_logger.info('export stock level for %s', stock_location.name)- 日志级别
- 全局设定
--log-level 局部设定
--log-handler=prefix:level
Ex. $ python odoo.py --log-handler=openerp.addons.my_module:DEBUG
在配置文件中设置log-handler
log_handler = :ERROR,werkzeug:CRITICAL,openerp.service.server:INFO
- 全局设定
Odoo shell(交互式调用odoo方法)
- 开启shell
- python odoo-bin shell -c odoo.conf -d odoo14_demo
- log_handler = :ERROR,werkzeug:CRITICAL,openerp.service.server:INFO
- 正确情况下开启一个odoo instance, 并且提供几个global vars.
- env -> 连接到DB
openerp -> 访问所有odoo modules
self -> Odoo super user(admin)
- env -> 连接到DB
应用
例子:
field = self.env['ir.model.fields'].search([('name', '=', 'property_account_receivable_id'), ('model', '=', 'res.partner'), ('relation', '=', 'account.account')], limit=1)
account_receivable = env['account.account'].search([('name', '=', 'property_account_receivable_id')],limit=1)
env['ir.property'].create({'name': 'property_account_receivable_id', 'company_id': main_company.id,'fields_id': field.id, 'value': 'account.account,4' })
env.cr.commit()退出
Ctrl+D
Python Debugger调试工具
应用
import pdb; pdb.set_trace()pdb命令
a/args
list –> to check where in the code you are standing;
p -> 查看变量值,ex. p products
pp -> pretty-prints a variable (useful with lists and dictionaries).
w(here) –> show call stack;
u(p), d(down) -> moves one level in the call stack;
n/next ->执行一行
s/step -> 进入函数调用
! -> 改变变量值, ex. !fname = '/tmp/stock_level.txt'
r/ return -> 恢复执行,直到当前函数返回
c/cont
b(reak) <args>: 列出所有断点/ 新建断点
disable bp_id:disables a breakpoint by ID;
enable bl_id: enables a disabled breakpoint by ID- 注意点
a. 设置logging level,避免太多log干扰;ex. --log-level=error
b. --workers=0
c. --max-cron-threads=0
前端调试
JS debug
console.log();
console.table(ars)
debugger 关键字;
命令行操作
命令行更新模块
./odoo-bin -c odoo.conf -u 模块名
命令行卸载模块
通过命令行卸载出问题的模块,可以让系统恢复正常,步骤如下:
- shell启动odoo, 指定连接的数据库
python odoo-bin shell -c odoo.conf -d odoo14_demo
通过env环境变量找到需要卸载的模块,调用模块卸载函数
self.env['ir.module.module'].search([('name', 'like', '需要卸载的模块名')]).button_immediate_uninstall()