Odoo/OpenERP 日志配置、使用及实现

当应用处于生产环境时,日志提供了有价值的运行时调试及监控信息,并且,也是一个有用的调试工具对于处于开发阶段的应用来说。此文描述在Odoo8.0中日志的配置、使用及实现

日志配置

       Odoo使用Python标准日志库logging。但是,它使用一种特殊的配置语法来为其模块配置日志级别。以下为Odoo日志配置的完整选项:

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‘]. Odoo 设置此日志级别选项的意义在于因为这些级别值被映射到了一个预先定义好的"module:log_level"键值对集合,即使这个选项没有被设置,Odoo则会使用预先定义的设置作为默认设置。具体内容参见下面的日志实现章节。
log_handler: 值可以为"module:log_level"键值 对。“Module”表示模块名,比如:“openerp.addons.account”或者 “openerp.addons.*”。"log_level"默认值为“INFO”  -- 也即是对所有模块来说,默认的日志级别就是‘INFO‘

下面为一个例子日志配置(译者注:配置一般放在openerp-server.conf文件中即可),请注意log_handler的配置语法--在键值对的两边没有引号或者方括号

log_level = debug_sql
log_handler = openerp.addons.my_addon1:DEBUG,openerp.addons.my_addon2: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日志功能被定义在“openerp/netsvc.py”中,日志的初始化定义在方法“init_logger()”中,在“tools.translated.resetlocal()“被调用之后,日志被设置为包含以下字段的格式:

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

例如:2014-09-23 01:32:34,915 42328 INFO odoo openerp.addons.test: 日志测试 (译者增加)

  1. 如果配置了一个日志文件选项"logfile",Odoo 日志会使用一个文件处理器(TimedRotatingFileHandler,WatchedFileHandler 和FileHandler三者之一)将日志信息写入文件。(译者增加)处理器不需要显示设置,如果logrotate被设置为True,则处理器为TimedRotatingFileHandler;如果设置为False,则处理器为FileHandler或者WatchedFileHandler
  2. 如果没有配置日志文件选项"logfile",日志信息会被输出到控制台
  3. 如果配置了日志数据库选项”log_db“,日志信息会被写入数据库中的”ir.logging“表中

     Odoo从Odoo中预先配置的映射键值对象PSEUDOCONFIG_MAPPER中读取针对不同模块的日志级别

[python]

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

译者注:该对象配置在openerp/netsvc.py文件中

    Odoo读取配置了模块和日志级别的映射的log_handler,并应用在所有模块中。默认日志级别:INFO. 以下为默认配置:

[python]

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

译者注:该对象配置在openerp/netsvc.py文件中

    日志初始化调用:方法 init_logger()openerp/tools/config.py文件中的parse_config()方法调用,而 parse_config()方法又被openerp/cli/server.py中的main方法调用

   备注:文件 openerp/loglevels.py看起来没被任何模块所使用

原文地址:http://www.mindissoftware.com/2014/09/07/Odoo-logging-configuration-usage-implementation/

时间: 2024-10-05 03:47:36

Odoo/OpenERP 日志配置、使用及实现的相关文章

Windows Azure上的Odoo(OpenERP)-2.在Ubuntu虚拟机上部署Odoo(OpenERP)

创建虚拟机的步骤在这里就不再赘述了,请参考上一篇博文. 首先用下述命令将Ubuntu系统进行更新: 1. sudo apt-get update 2. sudo apt-get upgrade 3. sudo apt-get dist-upgrade 然后使用您熟悉的文本编辑器,编辑/etc/apt/sources.list 7.0稳定版 deb http://nightly.openerp.com/7.0/nightly/deb/  ./ 开发版,应为8.0版 deb http://night

使用Odoo(OpenERP)的workflow实现多级审批

OpenERP的hr_expense模块,给我们的拓展提供了基础. 客户需求:应该是基于员工的报销额度,来设置审批到哪一级别(类似于java的jbpm工作流的配置),例如: a. 报销10元,员工上级经理审批即可. b. 报销1000元,员工上级经理审批后,需要部门经理再审批: 工作流: 1.增加(修改)状态,例如: 新建--一审--二审--付款--完成 2.员工新建费用检查无误后执行提交操作, 新建状态变为一审, 一审通过时执行的活动中判断是否需要二审, 需要则状态变为二审, 不需要则状态变为

Windows Azure上的Odoo(OpenERP)

OpenERP 改名为 Odoo 了,感觉名字怪怪的.Windows Azure也进入国内了,学习了一段时间的Azure,把它门结合在一起搞搞吧!本系列文章不涉及开发,纯属环境搭建及Odoo 系统功能测试!不喜者勿喷!只是为了记录自己练手的过程! 总体架构设计: 一台数据库服务器(Ubuntu, PostgreSQL ),一台Odoo 服务器(运行Ubuntu系统),一台Odoo 服务器(运行windows server 2102 R2系统).两台服务器分别运行不同的操作系统,分别测试不同环境下

MyBatis应用开发(6)日志之日志配置

1. 日志 1.1. 日志配置 MyBatis的总体配置文件中可以通过setting配置所采用的日志输出途径,也可以配置为不输出日志. logImpl:配置MyBatis使用的日志实现方式.可以选的方式:SLF4J.LOG4J.LOG4J2.JDK_LOGGING.COMMONS_LOGGING.STDOUT_LOGGING.NO_LOGGING.也可以是实现了org.apache.ibatis.logging.Log接口的类的全限定名. <configuration> <!-- 配置参

Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库

Odoo(OpenERP)服务器支持通过XML-RPC接口访问.操作数据库,基于此可实现与其他系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例.本例引用的jar包包括xmlrpc-common-3.1.3.jar, xmlrpc-client-3.1.3.jar和ws-commons-util-1.0.2.jar,如需要,可点击这里下载. package memo.by.weichen; import java.net.URL; import java.ut

CentOS 6.6 sudo日志配置

CentOS 6.6 sudo日志配置 查询syslog和sudo软件是否已安装 [[email protected] ~]# rpm-qa|egrep "sudo|syslog" rsyslog-5.8.10-8.el6.x86_64 sudo-1.8.6p3-15.el6.x86_64 配置/etc/sudoers文件 [[email protected] ~]# echo"Defaults    logfile=/var/log/sudo.log">&g

Tomcat日志配置

1.Log4j日志配置 ①log4j代替tomcat自身的log 如果想用log4j来详细的打印出 tomcat的log,用下面的方法可以做到首先,将common-logging和log4j的包放入tomat/common/lib下然后将log4j.properties文件放入tomcat/common/classes下 ②根据日志不同级别,进行配置输出 配置文件: ### set log levels ###log4j.rootLogger = debug ,  stdout ,  D , 

[译]Stairway to Integration Services Level 12 - 高级日志配置

介绍 本文中,我们将结合之前学习的时间冒泡,日志记录,以及复制模型.建立一个自定义的SSIS包日志模型. SSIS Task事件回顾    Reviewing SSIS Task Events 在做实验之前我们更改一下 Precedence.dtsx SSIS 包的设置. 把 Precedence.dtsx SSIS 包的 DisableEventHandlers 属性改为True Figure 2 屏蔽内置日志   Disable Built-In Logging 首先我们要移除已经存在的日志

django 1.8 日志配置

以下为setings配置logging代码片段 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) LOGDIR = os.path.join(BASE_DIR, "logs") LOGFILE = datetime.datetime.now().strftime("%Y-%m-%d") + ".log" if not os.path.exists(LOGD