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