基于oslo_log的日志管理
oslo_log是openstack中的日志模块,其对python logging的封装,可以快速便捷地写出我们的日志模块。官网上有许多参考示例,但实例永远是实例,其配合oslo_config模块,快捷注册日志,从而获取进程启动运行中的所有日志。官网资料详尽,参考https://docs.openstack.org/oslo.log/。
1.此处说明一点,关于LOG日志如何写入文件。
进程启动时,以ceilometer-agent-compute为例,除了有启动的脚本外,还有配置文件 --config-file 和 日志文件 --log-file:
在程序中,只需要将这些配置注册到oslo_config中,参考ceilometer的源码,编写一个例子,将进程的调用日志记录在文件中。
from oslo_log import log
from oslo_config import cfg
import sys
LOG = log.getLogger(__name__) def prepare_service(argv=None, config_file=None):
log.register_options(cfg.CONF) # 注册配置项
log_level = cfg.CONF.default_log_levels # 设置默认日志级别INFO
log.set_defaults(default_log_levels=log_level)
if argv is None:
argv = sys.argv
cfg.CONF(argv[1:], project='ceilometer', default_config_files=config_file) # 将进程中配置文件或日志文件注册在配置项中
log.setup(cfg.CONF, 'ceilometer') # def print_log():
LOG.info("===>I LOVE YOU CAESAR<=====") prepare_service()
print_log()
进程启动时,带上日志路径参数,执行完成后,可在日志文件中看到执行结果。
2.oslo_config对配置项的默认管理,以上通过 --config-file 传入服务配置,--log-file 传入服务日志位置。对于config-file中未配置项,使用默认的配置,其定义、注册和调用,举例说明:
定义两个配置项 mongo_OPTS和OPTS
mongo_OPTS = [
cfg.StrOpt('database',
default='mongodb',
help='database'), ]
OPTS = [
cfg.IntOpt('max_retries',
default=3,
help="max connection to database times"
),
cfg.IntOpt('retry_interval',
default=60,
help='connection timeout 300 senconds'),
cfg.StrOpt('connection',
default='mongodb+mongodb://196.168.1.111:27017,'
'196.168.1.112:27017,'
'196.168.1.113:27017/test',
help='connection mongodb url')
]
将两个配置项分别注册在DEFAULT和mongodb 分组中方法见下:
def list_opts():
return [('MONGO',itertools.chain(OPTS)),
('DEFAULT', itertools.chain(mongo_OPTS)),
] conf = cfg.ConfigOpts() for group, options in list_opts():
conf.register_opts(list(options),
group=None if group == "DEFAULT" else group)
注册完成后,即可通过conf.database获取DEFAULT中定义的mongodb,通过conf.MONGO.connection 获取其中connection对应值。
基于oslo_log的日志管理的更多相关文章
- spring+mybatis基于 AOP实现业务日志管理
最近在项目上用到了操作日志的相关,之前的解决方案就是自己写一个日志project,然后统一调用日志接口即可,这样方便自定义定制,因为有很多设备控制之类的都是需要确认一下的,但是,对数据的操作,比如,增 ...
- 基于吉日嘎底层架构的Web端权限管理操作演示-日志管理
权限管理要实现的效果是对“ 谁”可以访问“什么内容”,可以进行“哪些操作” 一系列权限的精细化控制.衡量一个软件好坏的重要标准是:它的权限体系是否足够细致.是否可以立体勾勒出信息对象的访问控制.前面4 ...
- 基于Common.Logging + Log4Net实现的日志管理
前言 Common.Logging 是Commons-Logging(apache最早提供的日志门面接口,提供了简单的日志实现以及日志解耦功能) 项目的.net版本.其目的是为 "所有的.n ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- 第13章 Linux日志管理
1. 日志管理 (1)简介 在CentOS 6.x中日志服务己经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其 ...
- ABP(现代ASP.NET样板开发框架)系列之8、ABP日志管理
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理
本文将介绍使用NLOG.Elmah结合ElasticSearch实现分布式日志管理. 一.ElasticSearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布 ...
- linux 学习 14 日志管理
第十四讲 日志管理 14.1 日志管理-简介 .日志服务 在CentOS .x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服 ...
- SQL Server中的事务日志管理(7/9):处理日志过度增长
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
随机推荐
- NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation)
NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation) NEU:通过对高阶相似性的近似,加持快速网络 ...
- 【转】AD常用端口
通常在域环境中我们有部分设备在DMZ区时,就需要知道AD的相关端口.在此提供给各位: 用户登录与验证身份时会用到的连接端口用户登录时会用到以下的服务,因此如果用户的计算机与域控制器之间被防火墙隔开,就 ...
- java判断字符串中是否包含中文 过滤中文
package com.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test ...
- Timer TimerTask schedule scheduleAtFixedRate
jdk 自带的 timer 框架是有缺陷的, 其功能简单,而且有时候它的api 不好理解. import java.util.Date; import java.util.Timer; import ...
- linux inode 详解 / 线上inode爆满解决方案
本文大量参考阮一峰大神博客,整理笔记 之所以写inode文章是由于一次线上问题,引发对inode深入的思考. 磁盘的inode监控与磁盘空间的监控同等重要,线上服务器一定要做好磁盘inode与磁盘空间 ...
- 使用Flex4画图形:圆、矩形、线
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- Python基础3 函数、递归、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- 机器学习实战之朴素贝叶斯进行文档分类(Python 代码版)
贝叶斯是搞概率论的.学术圈上有个贝叶斯学派.看起来吊吊的.关于贝叶斯是个啥网上有很多资料.想必读者基本都明了.我这里只简单概括下:贝叶斯分类其实就是基于先验概率的基础上的一种分类法,核心公式就是条件概 ...
- java中常用工具类
目录 一. org.apache.commons.io.IOUtils 二. org.apache.commons.io.FileUtils 三. org.apache.commons.lang.St ...
- 小程序登录&授权&获取用户信息
一 .登录 时序图如下: wx.login() 获取js_code 示例代码: App({ onLaunch: function() { wx.login({ success: ...