Python 日志管理封装
封装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 日志管理封装的更多相关文章
- python selenium2示例 - 日志管理
logger继承图 前言 在自动化测试实践过程中,必不可少的就是进行日志管理,方便调试和生产问题追踪,python提供了logging模块来进行日志的管理.下面我们就logging模块的学习和使用进行 ...
- python 以单例模式封装logging相关api实现日志打印类
python 以单例模式封装logging相关api实现日志打印类 by:授客QQ:1033553122 测试环境: Python版本:Python 2.7 实现功能: 支持自由配置,如下lo ...
- python 日志的配置,python对日志封装成类,日志的调用
# python 日志的配置,python对日志封装成类,日志的调用 import logging # 使用logging模块: class CLog: # --------------------- ...
- python操作日志的封装
前言 曾经转载过一篇关于python日志模块logging的详解 https://www.cnblogs.com/linuxchao/p/linuxchao-log.html, 虽然这篇文章是别人写的 ...
- python+pytest接口自动化(15)-日志管理模块loguru简介
python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细). 但logging配置起来比较繁琐,且在多进行多线程等场景下使用时,如果不经过特殊处理, ...
- 基于oslo_log的日志管理
oslo_log是openstack中的日志模块,其对python logging的封装,可以快速便捷地写出我们的日志模块.官网上有许多参考示例,但实例永远是实例,其配合oslo_config模块,快 ...
- Java 日志管理最佳实践
转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
- python日志模块logging
python日志模块logging 1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...
- Java日志管理
首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 您还未登录 ! 登录 注册 JavaCrazyer的ItEye(codewu.com)技术博客 博客 微博 相册 收藏 留言 关于我 ...
随机推荐
- ros 编译指定包
一.编译到devel目录在工作空间下(有devel文件夹的那个目录)执行 catkin_make --pkg 包名 如果报错,执行catkin_make -DCATKIN_WHITELIST_PACK ...
- 会员通过消费攒积分,升级RENEW以及降级的需求
需求看上去及其简单,如下: 用文字描述就开始不容易了. 先按等级排个序,根据下一个等级,推前一个等级: --C---B----V-----A 在计算一下升级需要的积分:--C表示普通会员-----需要 ...
- Hibernate HQL查询 插入 更新(update)实例
1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...
- [ios][map]自定义地图标注
参考:http://blog.csdn.net/mad1989/article/details/8794762 ios 一步一步学会自定义地图吹出框(CalloutView)-->(百度地图,高 ...
- JAVA类和对象创建
面向对象 学习目标: 理解面向对象的编程思想 理解类与对象的关系 如何创建类与对象 方法重载 一:什么是面向对象编程(OOP) 面向对象编程(Object Oriented Programming,O ...
- Machine Learning 资料
Awesome系列 Awesome Machine Learning Awesome Deep Learning Awesome TensorFlow Awesome TensorFlow Imple ...
- Html概述
Html概述 主要思想,主要思想很重要 一.Html是什么 一种标记语言(用标签进行标记) 对要显示的文字进行标记 二.Html核心 标签(只认标签) 封装,所以必须有头尾,你才知道标签的范围,你才知 ...
- CDS & ORF & 启动子 & 终止子 & 转录因子 & 基因结构 & UTR
ORF和CDS的区别 ORF的英文展开是open reading frame(开放阅读框). CDS的英文展开是coding sequences (编码区). CDS:DNA转录成mRNA,mRNA经 ...
- 新概念 Lesson 1 Excuse me!
xu言: 从哪里跌倒,就从哪里爬起来.希望这次真的能够坚持下去... standard ['stændəd] pronunciation [prə,nʌnsɪ'eɪʃ(ə)n] basic ...
- 用Rails.5.2+ Vue.js做 vue-todolist app
Rails5.2+Vue.js完成Lists(curd) 注意: Edit/update使用SPA(single-page Application单页面程序)的方法完成.点击文字出现一个输入框和按钮. ...