如何启动odoo中logging

概述

生产环境,日志提供运行时调试及监控信息,于开发阶段也有用。记录日志助查询数据更改、错误,定位bug等,_logger用标准库初始化,以python内部变量__name__标示模块相关日志信息。

日志配置

用Python标准日志库logging。用特殊配置语法为模块配置日志级别。日志配置完整选项:


logfile:日志文件名,如opt/odoo.log. 不设置,则默认为stdout,输出到控制台
logrotate:True/False.如设True,每天建个文件,存30天
log_db:Ture/False. 如设True, 写入数据库“ir_logging”表
log_level:级别 , [‘debug_rpc_answer’, ‘debug_rpc’, ‘debug’, ‘debug_sql’, ‘info’, ‘warn’, ‘error’, ‘critical’]中任意项. 被映射到预先定义的"module:log_level"键值对集合,即使选项没被设置,用预先定义设置为默认设置。具体见日志实现。
log_handler: 值为"module:log_level"键值对。“Module”模块名,如:“odoo.addons.account”或“odoo.addons.*”。"log_level"默认为“INFO” – 对所有模块,默认日志级是’INFO’


例子日志配置(odoo.conf),log_handler配置语法–键值对两边没有引号或方括号

log_level = debug_sql
log_handler = odoo.addons.tx_b_addons:DEBUG,odoo.addons.tx_e_addons:DEBUG


日志使用

 Odoo addon模块*.py文件用日志简单.不同级别,用下例子代码

import logging
 
_logger = logging.getLogger(__name__)
 
_logger.debug("debug message for debugging only")
_logger.info("information message to report important modular event")
_logger.warning("warning message to report minor issues")
_logger.error("error message to report failed operations")
_logger.critical("critical message -- so bad that the module cannot work")

日志实现

“odoo/netsvc.py”初始化定义方法“init_logger()”,“tools.translated.resetlocal()“被调后,被设为包含以下字段格式:

time,process id,logging level,database name,module name,logging message

例如:2024-03-23 01:32:34,915 42328 INFO odoo odoo.addons.test: 日志测试 

配置"logfile",用文件处理器(TimedRotatingFileHandler,WatchedFileHandler 和FileHandler)写入。处理器不需显示设置,如logrotate设为True,则处理器为TimedRotatingFileHandler;如设为False,则处理器为FileHandler或者WatchedFileHandler
如没"logfile",输出到控制台


配置”log_db“,写入数据库”ir.logging“表
从预先配置映射键值对象PSEUDOCONFIG_MAPPER读取不同模块日志级别

注:对象配置在odoo/netsvc.py

Odoo读取配置模块和日志级别映射的log_handler,应用所有模块。默认级别:INFO. 默认配置:

PSEUDOCONFIG_MAPPER = {
    'debug_rpc_answer': ['odoo:DEBUG','odoo.http.rpc.request:DEBUG', 'odoo.http.rpc.response:DEBUG'],
    'debug_rpc': ['odoo:DEBUG','odoo.http.rpc.request:DEBUG'],
    'debug': ['odoo:DEBUG'],
    'debug_sql': ['odoo.sql_db:DEBUG'],
    'info': [],
    'warn': ['odoo:WARNING', 'werkzeug:WARNING'],
    'error': ['odoo:ERROR', 'werkzeug:ERROR'],
    'critical': ['odoo:CRITICAL', 'werkzeug:CRITICAL'],
}

注:对象配置在odoo/netsvc.py
日志初始化调: init_logger()被odoo/tools/config.py中parse_config()调用,而 parse_config()方法被odoo/cli/server.py中main方法调用

DEFAULT_LOG_CONFIGURATION = [
    'odoo.workflow.workitem:WARNING',
    'odoo.http.rpc.request:INFO',
    'odoo.http.rpc.response:INFO',
    'odoo.addons.web.http:INFO',
    'odoo.sql_db:INFO',
    ':INFO',//所有模块设置日志级别
]

异常

odoo中有exceptions类进行异常处理

form odoo import exceptions
raise exceptions.Warning('告警信息')
raise exceptions.ValidationError('验证错误')

日志和异常写在模型(models文件夹中类),业务逻辑方面函数中添加告警和错误有助于检查错误和异常,优化代码。

联系方式

手机:13822161573 微信:txsolarterms QQ:419396409

  • 54
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值