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编程实现蚁群算法详解
Nov 13 Python
python实现对输入的密文加密
Mar 20 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
python打包多类型文件的操作方法
Sep 21 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
python中@property的作用和getter setter的解释
Dec 22 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 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中关于普通表单多文件上传的处理方法
2011/03/25 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
vue实现登录拦截
2020/06/29 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
Python set常用操作函数集锦
2017/11/15 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
简单了解python变量的作用域
2019/07/30 Python
python银行系统实现源码
2019/10/25 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
幼儿园教师获奖感言
2014/03/11 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB