oslo: oslo_log解析

oslo_config介绍了oslo_config组件的使用说明。本章中,介绍oslo_log的使用。oslo_log是对python logging模块的封装。配合oslo_config,可以快速的注册日志模块,简化日志的使用。

日志级别

  • DEBUG: 打印全级别日志
  • INFO: 打印 info/warning/error/critical 级别日志
  • WARNING: 打印 warning/error/critical 级别日志
  • ERROR: 打印 error/critical 级别日志
  • CRITICAL: 打印 critical 级别

oslo.log相关的配置参数,定义在oslo.log/_options.py文件中:

  • debug:表示是否将日志级别设置为DEBUG,默认为false;
  • verbose: 表示默认的日志级别,默认为true,INFO级别;false: WARNING;
  • log_file:表示日志文件的名称,默认以组件中服务名称命名;
  • log_dir:表示日志文件的路径;
  • log_date_format:表示日志时间的格式,%Y-%m-%d %H:%m:%s;
  • logging_context_format_string:表示日志内容的格式;
    '%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' '%(name)s [%(request_id)s %(user_identity)s] ' '%(instance)s%(message)s'
  • use_stderr:表示是否使用系统标准输出打印错误日志,默认false;
  • use_journal: 是否使用journal日志,
  • default_log_levels:表示日志的默认级别;
  • instance_format:表示instance的日志打印格式;

oslo.log的使用

Demo:

from oslo_config import cfg
from oslo_log import log as logging
import sys

LOG = logging.getLogger(__name__)
CONF = cfg.CONF
#DOMAIN指定logger的作用域,支持在一个程序中存在多个不同 domain 的 logger
DOMAIN = "demo"

logging.register_options(CONF)
logging.setup(CONF, DOMAIN)

# Oslo Logging uses INFO as default
LOG.info("Oslo Logging")
LOG.warning("Oslo Logging")
LOG.error("Oslo Logging") 

oslo.log的初始化一般分成三步:

  • logging.register_options(cfg.CONF): 注册配置文件及命令行中的配置项
  • logging.set_defaults (optional): 设置oslo.log的一些默认值
  • logging.setup(cfg.CONF,DOMAIN): 创建logging

同时结合oslo_config,加载配置文件或命令行中的一些日志配置项。如下例所示,我们在配置文件中指明日志的级别,及日志的输出格式。

以下指定配置文件及日志文件:

#!/usr/bin/env python3.7
#-*-coding:utf-8-*-

from oslo_config import cfg
from oslo_log import log as logging
import sys

LOG = logging.getLogger(__name__)
CONF = cfg.CONF
DOMAIN = "DEMO"

def prepare_conf():
    grp = cfg.OptGroup(name='API',title="API Opts")
    host = cfg.IPOpt("host",default="0.0.0.0",help="Listening IP")
    cfg.CONF.register_group(grp)
    CONF.register_opt(host,group=grp)

def prepare_service():
    logging.register_options(CONF)
    cfg.CONF(sys.argv[1:],project=DOMAIN)
    logging.setup(CONF, DOMAIN)
    

prepare_conf()

prepare_service()

# Oslo Logging uses INFO as default
LOG.info(cfg.CONF.API.host)
LOG.warning("Oslo Logging")
LOG.error("Oslo Logging")

api.conf:

[DEFAULT]
debug = true

[API]
host = 127.0.0.1

运行:

python3.7 oslo_lg.py  --config-file ./api.conf --log-file=./test.log

你可能感兴趣的:(oslo: oslo_log解析)