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 相关文章推荐
Python批量修改文件后缀的方法
Jan 26 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
浅析Python迭代器的高级用法
Jul 16 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
Django利用AJAX技术实现博文实时搜索
May 06 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获取301跳转URL简单实例
2013/12/16 PHP
php单例模式的简单实现方法
2016/06/10 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
php表单处理操作
2017/11/16 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
初识Javascript小结
2015/07/16 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
javascript表单正则应用
2017/02/04 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
JS实现多功能计算器
2020/10/28 Javascript
python之yield表达式学习
2014/09/02 Python
python简单猜数游戏实例
2015/07/09 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
python数值基础知识浅析
2019/11/19 Python
python开发入门——set的使用
2020/09/03 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
Python里面如何实现tuple和list的转换
2012/06/13 面试题
企业出纳岗位职责
2014/03/12 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL