python实现log日志的示例代码


Posted in Python onApril 28, 2018

源代码:

# coding=utf-8
import logging
import os
import time
LEVELS={'debug':logging.DEBUG,\
  'info':logging.INFO,\
  'warning':logging.WARNING,\
  'error':logging.ERROR,\
  'critical':logging.CRITICAL,}
  
logger=logging.getLogger()
level='default'
def createFile(filename):
 path=filename[0:filename.rfind('/')]
 if not os.path.isdir(path):
  os.makedirs(path)
 if not os.path.isfile(filename):
#创建并打开一个新文件
  fd = open(filename,mode='w',encoding='utf-8')
  fd.close()
class MyLog:
 log_filename='E:/quality/it/pyrequest-master/log/itest.log'
 err_filename='E:/quality/it/pyrequest-master/log/err.log'
 dateformat='%Y-%m-%d %H:%M:%S'
 logger.setLevel(LEVELS.get(level,logging.NOTSET))
 createFile(log_filename)
 createFile(err_filename)
#注意文件内容写入时编码格式指定
 handler=logging.FileHandler(log_filename,encoding='utf-8')
 errhandler=logging.FileHandler(err_filename,encoding='utf-8')
 @staticmethod 
 #静态方法
 def debug(log_message):
  setHandler('debug')
  logger.debug("[DEBUG "+getCurrentTime()+"]"+log_message)
  removerhandler('debug')
 @staticmethod
 def info(log_message):
  setHandler('info')
  logger.info("[INFO "+getCurrentTime()+"]"+log_message)
  removerhandler('info')
 
 @staticmethod
 def warning(log_message):
  setHandler('warning')
  logger.warning("[WARNING "+getCurrentTime()+"]"+log_message)
  removerhandler('warning')
 @staticmethod
 def error(log_message):
  setHandler('error')
  logger.error("[ERROR "+getCurrentTime()+"]"+log_message)
  removerhandler('error')
 @staticmethod
 def critical(log_message):
  setHandler('critical')
  logger.critical("[CRITICAL "+getCurrentTime()+"]"+log_message)
  removerhandler('critical')
# logger可以看做是一个记录日志的人,对于记录的每个日志,他需要有一套规则,比如记录的格式(formatter),
# 等级(level)等等,这个规则就是handler。使用logger.addHandler(handler)添加多个规则,
# 就可以让一个logger记录多个日志。
def setHandler(level):
 if level=='error':
  logger.addHandler(MyLog.errhandler)
 #handler=logging.FileHandler(log_filename)
 #把logger添加上handler
 logger.addHandler(MyLog.handler)
def removerhandler(level):
 if level=='error':
  logger.removeHandler(MyLog.errhandler)
 logger.removeHandler(MyLog.handler)
def getCurrentTime():
 return time.strftime(MyLog.dateformat,time.localtime(time.time()))
if __name__=="__main__":
 MyLog.debug("This is debug message")
 MyLog.info("This is info message")
 MyLog.warning("This is warning message")
 MyLog.error("This is error message")
 MyLog.critical("This is critical message")

以上这篇python实现log日志的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Sanic框架请求与响应实例分析
Jul 16 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
python2和python3在处理字符串上的区别详解
May 29 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
Django如何使用jwt获取用户信息
Apr 21 Python
Python中SQLite如何使用
May 27 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 #Python
Python之读取TXT文件的方法小结
Apr 27 #Python
如何利用python查找电脑文件
Apr 27 #Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 #Python
python Spyder界面无法打开的解决方法
Apr 27 #Python
解决Spyder中图片显示太小的问题
Apr 27 #Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 #Python
You might like
用PHP实现小型站点广告管理
2006/10/09 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
php提交post数组参数实例分析
2015/12/17 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python模块搜索路径代码详解
2018/01/29 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
python 爬虫请求模块requests详解
2020/12/04 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
电焊工工作岗位职责
2014/02/06 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书