[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模块用来写日志的更多相关文章

  1. logging:不喜欢写日志可不好哦

    logging模块简介 logging模块是python内置的标准模块,主要用于输出程序的运行日志. 可以设置输出日志的等级,日志保存路径,日志文件回滚等等. logging模块的基本使用 impor ...

  2. Python logging模块无法正常输出日志

    废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...

  3. Python模块-logging模块(一)

    logging模块用来写日志文件 有5个级别,debug(),info(),warning(),error()和critical(),级别最高的为critical() debug()为调试模式,inf ...

  4. Python之日志处理(logging模块)

    本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...

  5. 【转】Python之日志处理(logging模块)

    [转]Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging ...

  6. Python之日志处理 logging模块

    Python之日志处理(logging模块)   本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...

  7. logging模块及日志框架

    logging模块及日志框架 logging模块 一.导入方式 import logging 二.作用 写日志 三.模块功能 3.1 经常使用 # V1 import logging logging ...

  8. Python之日志处理(logging模块)转载

    本人主要做一个知识的归类与记录,如是转载类文章,居首都会备注原链接,尊重原创者,谢谢! 此文转载原链接:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 ...

  9. Python之日志处理(logging模块一基础)

    转载自:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logg ...

随机推荐

  1. python json数据的转换

    1  Python数据转json字符串 import json json_str = json.dumps(py_data) 参数解析: json_str = json.dumps(py_data,s ...

  2. MySQL INSERT UPATE DELETE语句

    插入完整一行 INSERT INTO customers(cust_name,cust_contact,cust_email,cust_address,cust_city,cust_state,cus ...

  3. centos6/7安装java和maven

    下载安装包并解压到相关目录即可 编辑环境变量vim /etc/profile.d/maven.sh export JAVA_HOME=/app/soft/java-1.8.0_181 export J ...

  4. Linux基本命令总结(七)

    接上篇: 33,Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于 ...

  5. IIS运行一段时间不响应的解决方法

    查找事件记录,提示为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制 解决方案: Internet 信息服务(IIS)管理器->应用程序池->DefaultA ...

  6. 洛谷P1258 小车问题(题解)

    https://www.luogu.org/problemnew/show/P1258(题目传送) 看题的第一眼就把题归为二分题,一直向着二分的方向走,却忽略了数学的推理.推理一番后(看了题解),发现 ...

  7. 第二章 python的介绍及变量

    1.编程语言的介绍 a.机器语言 使用二进制编写指令的编程方式 b.汇编语言 汇编指令与机器语言相对应 c.高级语言 需要借助特殊的工具将其转换成机器语言,但是方便人进行阅读理解的编程方式 从执行效率 ...

  8. ajax实现长连接

    项目需求:需要实时的读取日志文件里的数据,并且使用Echart实时更新折线图. 使用ajax实现客户端与服务器端的数据传输. 目的:我想通过ajax与服务器建立一个长连接,服务器会不断的传输数据给前台 ...

  9. kubernetes云平台管理实战: pod资源共享(三)

    一.共享容器IP地址 1.查看容器进程 [root@k8s-node1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS ...

  10. Python面向对象进阶和socket网络编程-day08

    写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __i ...