python对日志进行处理的实例代码


Posted in Python onOctober 06, 2018

平时做数据处理基本离不了日志记录功能。每次都配置一堆挺烦人,索性封装个模块,这里记录一下,与大家共享。
说明

本日志模块目前只有一个方法getLogger,其他配置项通过参数传递,包括日志文件名,等级,日志文件划分方式,日志清除配置,日志格式等。

logger.py

import loggin

gfrom logging import handlers

# 日志级别字典

__level_dict = {  

'critical': logging.CRITICAL,  

'fatal': logging.CRITICAL,  

'error': logging.ERROR,  

 'warning': logging.WARNING,  

 'warn': logging.WARNING,  

 'info': logging.INFO,  

 'debug': logging.DEBUG

}

def getLogger(filename, level='info', when='D', backupCount=3,

       fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):

  """

  获取日志处理对象

 

  :param filename: 日志文件名称

  :param level: 日志等级:debug, info, warn/warning, error, critical

  :param when: 日志文件分割的时间单位,单位有以下几种:<br>

        - S 秒<br>

        - M 分<br>

        - H 小时<br>

        - D 天<br>

        - W 每星期<br>

        - midnight 每天凌晨<br>

  :param backupCount: 备份文件的个数,如果超过这个数量,就会自动删除

  :param fmt: 日志信息格式

  :return:

  """

  level = __level_dict.get(level.lower(), None)

  logger = logging.getLogger(filename)  # 设置日志格式

  format_str = logging.Formatter(fmt)  # 设置日志级别

  logger.setLevel(level)  # 控制台输出

  console_handler = logging.StreamHandler()  # 控制台输出的格式

  console_handler.setFormatter(format_str)

  logger.addHandler(console_handler)  # 文件输出

  file_handler = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backupCount,

                           encoding='utf-8')  # 文件输出的格式

  file_handler.setFormatter(format_str) 

  logger.addHandler(file_handler)  return loggerif __name__ == '__main__':

  log = getLogger('test.log')

  log.debug('debug')

  log.info('info')

  log.warning('警告')

  log.error('报错')

  log.critical('严重')

  getLogger('error.log', level='error').error('error')

运行结果

2018-09-06 17:07:40,909 - D:/jetbrains/workspace-pycharm/test/logger.py[line:59] - INFO: info
2018-09-06 17:07:40,909 - D:/jetbrains/workspace-pycharm/test/logger.py[line:60] - WARNING: 警告
2018-09-06 17:07:40,909 - D:/jetbrains/workspace-pycharm/test/logger.py[line:61] - ERROR: 报错
2018-09-06 17:07:40,910 - D:/jetbrains/workspace-pycharm/test/logger.py[line:62] - CRITICAL: 严重
2018-09-06 17:07:40,915 - D:/jetbrains/workspace-pycharm/test/logger.py[line:63] - ERROR: erro

以上就是本次相关知识点的全部内容和代码,感谢大家对三水点靠木的支持。

Python 相关文章推荐
python中的__init__ 、__new__、__call__小结
Apr 25 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
Python3中的json模块使用详解
May 05 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
python路径的写法及目录的获取方式
Dec 26 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
python实现梯度下降和逻辑回归
Mar 24 Python
Django Model中字段(field)的各种选项说明
May 19 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
浅析Python函数式编程
Oct 06 #Python
Python实现iOS自动化打包详解步骤
Oct 03 #Python
Python中GIL的使用详解
Oct 03 #Python
Python线程同步的实现代码
Oct 03 #Python
详解通过API管理或定制开发ECS实例
Sep 30 #Python
Python 使用类写装饰器的小技巧
Sep 30 #Python
浅谈django三种缓存模式的使用及注意点
Sep 30 #Python
You might like
ThinkPHP缓存方法S()概述
2014/06/13 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP实现小偷程序实例
2016/10/31 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
jquery实现点击页面回到顶部
2016/11/23 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
利用python实现数据分析
2017/01/11 Python
基于python 字符编码的理解
2017/09/02 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
python入门教程 python入门神图一张
2018/03/05 Python
浅谈flask源码之请求过程
2018/07/26 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
Linux文件操作命令都有哪些
2016/07/23 面试题
DELPHI面试题研发笔试试卷
2015/11/08 面试题
九年级科学教学反思
2014/01/29 职场文书
爱国演讲稿400字
2014/05/07 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android