zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/chjbbs/p/5575105.html
Copyright © 2011-2022 走看看