ansible的logging模块用来写日志
[root@node-1 library]# cat dolog.py
#!/bin/env python
ANSIBLE_METADATA = { 'metadata_version': 'alpha',
'status': ['preview'],
'supported_by': 'lin.wang',
'release_date': '2018-05-09'}
DEOCUMENTATION = """
---
module: dolog
version_added: "1.0"
short_descriptions: logging with log level
description:
- write the logs for doctor ,use "delegate_to: localhost" ,will write log at local logfile.
opetions:
level:
- [debug,info,warn,error,critical]
host: "task inventory_hostname"
message: "message info"
path: logfile path|default("{{ logfile }}")
delegate_to: localhost
cause log file be created at localhost
"""
EXAMPLES = """
# Example from Ansible Playbooks
dolog:
message: "xxxxxxxxx."
path: "{{ logfile }}"
host: "{{ hostname }}"
format: "{{ LOGFMT }}"
delegate_to: localhost
"""
import os
import time
import logging
from ansible.module_utils.basic import AnsibleModule
date = time.strftime("%Y-%m-%d",time.localtime())
DIS_LEVEL = "INFO"
def path_logfile(path=None):
"""
default the log path is /tmp/escloud-2018-*
"""
if not path:
filename = 'escloud-%s.log'%date
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
path = '%s%s%s'%(path,os.sep,filename)
if not os.path.exists(path):
os.popen('touch %s'%path)
return path def get_logger(logpath=None):
ret = logging.getLogger()
fh = logging.FileHandler(logpath)
fm = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
fh.setFormatter(fm)
ret.addHandler(fh)
return ret def main():
module = AnsibleModule(
argument_spec = dict(
message = dict(required=True, type='str'),
level = dict(choice=['debug','info','warn','error','critical'], required=False, default='warn', type='str'),
path = dict(aliases=['dest', 'name'], required=False, type='path'),
host = dict(required=False, type='str'),
format = dict(choice=['txt','html'], required=False, default='txt', type='str'),
)
) params = module.params
loglevel = params['level']
host = params['host']
message = params['message']
fmt = params['format'] if params['path']: #if path is none then call function path_logfile() getout tmppath
path = params['path']
else:
path = path_logfile() logger = get_logger(path) logger.setLevel(DIS_LEVEL) if fmt == "txt":
messages = "%s\t%s"%(host,params['message'])
elif fmt == "html":
messages = "%s\t%s<br />"%(host,params['message']) displaymsg = getattr(logger,loglevel)
displaymsg('%s'%messages) #result = dict(changded=True)
return module.exit_json(changed=True)
#return module.exit_json(**result)
if __name__ == '__main__':
main()
ansible的logging模块用来写日志的更多相关文章
- logging:不喜欢写日志可不好哦
		
logging模块简介 logging模块是python内置的标准模块,主要用于输出程序的运行日志. 可以设置输出日志的等级,日志保存路径,日志文件回滚等等. logging模块的基本使用 impor ...
 - Python logging模块无法正常输出日志
		
废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...
 - Python模块-logging模块(一)
		
logging模块用来写日志文件 有5个级别,debug(),info(),warning(),error()和critical(),级别最高的为critical() debug()为调试模式,inf ...
 - Python之日志处理(logging模块)
		
本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...
 - 【转】Python之日志处理(logging模块)
		
[转]Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging ...
 - Python之日志处理 logging模块
		
Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...
 - logging模块及日志框架
		
logging模块及日志框架 logging模块 一.导入方式 import logging 二.作用 写日志 三.模块功能 3.1 经常使用 # V1 import logging logging ...
 - Python之日志处理(logging模块)转载
		
本人主要做一个知识的归类与记录,如是转载类文章,居首都会备注原链接,尊重原创者,谢谢! 此文转载原链接:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 ...
 - Python之日志处理(logging模块一基础)
		
转载自:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logg ...
 
随机推荐
- AngularJS 1.x系列:AngularJS过滤器(4)
			
1. AngularJS过滤器(Filter)使用方法 AngularJS中过滤器(Filter)主要功能是格式化数据. AngularJS过滤器使用方法有3种: ◊ 在表达式{{}}中使用 ◊ 在指 ...
 - Docker批量打标签,批量推送
			
docker tag awmts- registry.gfstack.geo:/awmts- docker tag cts- registry.gfstack.geo:/cts- docker tag ...
 - mongoDB 文档操作_增
			
增加 / 插入 /保存 单文档插入 命令 db.collection.insertOne(doc) 功能 向被 use 的数据库中插入数据 实例 db.class.insertOne({"n ...
 - this指针详解
			
什么是this this是一个const指针,存的是当前对象的地址,指向当前对象,通过this指针可以访问类中的所有成员. 当前对象是指正在使用的对象,比如a.print(),a就是当前对象. 关于t ...
 - shell 基础(二)变量
			
1. shell变量的定义 1)Shell 支持以下三种定义变量的方式: variable=value variable='value' variable="value" 特点 1 ...
 - 深入理解JVM(2)——运行时数据区
			
1.运行时数据区 1.1.程序计数器 记录当前线程正在执行的字节码指令的地址,如果正在执行的是 Native 方法,这个计数器值则为空. 1.2.虚拟机栈 每个 Java 方法在执行的同时会创建一个栈 ...
 - CentOS6.5安装ElasticSearch6.2.3
			
CentOS6.5安装ElasticSearch6.2.3 1.Elastic 需要 Java 8 环境.(安装步骤:http://www.cnblogs.com/hunttown/p/5450463 ...
 - 腾讯云服务器tomcat端口无法访问
			
第一种情况: 如题:https://console.cloud.tencent.com/cvm/securitygroup 需要去这个地址设置安全组. 说实话,一句mmp不知当讲不当讲.使用说明这块太 ...
 - 无连接运输的UDP、可靠数据传输原理、面向连接运输的TCP
			
由[RFC 768]定义的UDP只是做了运输协议能够做的最少工作.除了复用/分解功能极少量的差错检测外,它几乎没有对IP增加别的东西.如果应用程序开发人员选择UDP而不是TCP,则该应用程序差不多就是 ...
 - css浮动(float)全方位案例解析
			
前言 浮动最早的使用是出自<img src="#" align="right" />,用于文本环绕图片的排版处理.当然也是一种常用的布局方式. fl ...