封装python中的logging方便日常使用

class Logger(object):
level_mapping = {
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
} # 日志映射 def __init__(self, filename, level='info', when='D', backCount=3,
fmt='%(asctime)s - [line:%(lineno)d] - %(levelname)s: %(message)s'):
self.logger = logging.getLogger(filename)
format_str = logging.Formatter(fmt) # 设置格式
self.logger.setLevel(self.level_mapping.get(level)) # 设置级别
self.logger.propagate = False # 关闭logger向上级传输
stream = logging.StreamHandler() # 流形式向屏幕输出
stream.setFormatter(format_str) # 流的显示的格式
file = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backCount,
encoding='utf-8') # 往文件里写入
# Calculate the real rollover interval, which is just the number of
# seconds between rollovers. Also set the filename suffix used when
# a rollover occurs. Current 'when' events supported:
# S 秒
# M 分
# H 小时
# D 天
# W 每星期(interval==0时代表星期一)
# midnight 凌晨
file.setFormatter(format_str) # 设置文件里写入的格式
self.logger.addHandler(stream) # 把对象加到logger里
self.logger.addHandler(file) # 把对象加到logger里

封装logging的类以后,通过修改init中的参数来设置日志输出级别,样式,日志生成时间间隔,最大备份数等

例如做一个小的网络监控小脚本运作日志输出:

if __name__ == '__main__':
ip = "www.google.com" # 修改自己需要ping的路径
path = os.path.join(os.path.dirname(__file__), 'pingLogs.log')
# 日志存放位置
log = Logger(filename=path)
while True:
time.sleep(1)
ping = os.system("ping %s -n 1" % ip) # ping 命令根据不同操作系统写不同ping格式 windows
# ping = os.system('ping -c 1 -W 1 %s' % ip) # ping 命令根据不同操作系统写不同ping格式 linux
if ping == 0:
log.logger.info('connection is ok and continue ping to %s' % ip)
continue
else:
log.logger.error('server is disconnected for %s check your network' % ip)
continue

Python 日志管理封装的更多相关文章

  1. python selenium2示例 - 日志管理

    logger继承图 前言 在自动化测试实践过程中,必不可少的就是进行日志管理,方便调试和生产问题追踪,python提供了logging模块来进行日志的管理.下面我们就logging模块的学习和使用进行 ...

  2. python 以单例模式封装logging相关api实现日志打印类

    python 以单例模式封装logging相关api实现日志打印类   by:授客QQ:1033553122 测试环境: Python版本:Python 2.7   实现功能: 支持自由配置,如下lo ...

  3. python 日志的配置,python对日志封装成类,日志的调用

    # python 日志的配置,python对日志封装成类,日志的调用 import logging # 使用logging模块: class CLog: # --------------------- ...

  4. python操作日志的封装

    前言 曾经转载过一篇关于python日志模块logging的详解 https://www.cnblogs.com/linuxchao/p/linuxchao-log.html, 虽然这篇文章是别人写的 ...

  5. python+pytest接口自动化(15)-日志管理模块loguru简介

    python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细). 但logging配置起来比较繁琐,且在多进行多线程等场景下使用时,如果不经过特殊处理, ...

  6. 基于oslo_log的日志管理

    oslo_log是openstack中的日志模块,其对python logging的封装,可以快速便捷地写出我们的日志模块.官网上有许多参考示例,但实例永远是实例,其配合oslo_config模块,快 ...

  7. Java 日志管理最佳实践

    转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...

  8. python日志模块logging

    python日志模块logging   1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...

  9. Java日志管理

    首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 您还未登录 ! 登录 注册 JavaCrazyer的ItEye(codewu.com)技术博客   博客 微博 相册 收藏 留言 关于我   ...

随机推荐

  1. Codeforces Round #223 (Div. 2) E. Sereja and Brackets 线段树区间合并

    题目链接:http://codeforces.com/contest/381/problem/E  E. Sereja and Brackets time limit per test 1 secon ...

  2. python 获取IP

    第一种 import commandscmd = "ifconfig br0 | grep 'inet addr' | sed 's/^.*addr://g' |sed 's/ Bcast: ...

  3. DEV-C++设置C++11标准

    DEV-C++默认的标准是C++98,改成C++11的方法如下: Tools -> Compiler Options -> Setting -> Code Generation -& ...

  4. c++ 判断数组元素是否都是奇数(all_of)

    #include <iostream> // std::cout #include <algorithm> // std::all_of #include <array& ...

  5. 《A_Pancers团队》———团队项目原型设计与开发

    一.实验目的与要求 (1)掌握软件原型开发技术: (2)学习使用软件原型开发工具:本实验中使用墨刀 二.实验内容与步骤 任务1:针对实验六团队项目选题,采用适当的原型开发工具设计团队项目原型: 任务2 ...

  6. C#通过XElement写入XML文件

    首先我们先看一下最终结果,如下: <?xml version="1.0" encoding="utf-8"?> <config> < ...

  7. PHP自带调试函数

    1.var_dump:打印变量的相关信息 $a = array(1, 2, array("a", "b", "c")); var_dump( ...

  8. 3-29 params的理解; Active Model Errors; PolymorphicRoutes 多态的路径; ::Routing::UrlFor

    params的理解和作用: http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-require A ...

  9. Confluence 6 LDAP 用户结构设置

    用户对象类(User Object Class) 这个是在 LDAP  用户对象中对用户分类的名字.例如: user 用户对象过滤器(User Object Filter) 当对用户对象进行搜索的时候 ...

  10. git log 查找

    查找含有某个字符串的 commit git log --grep=224 // 这条命令是查看含有 "224" 关键字的 git commit 查看某个作者 git log --a ...