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中的rfind()方法使用详解
May 19 Python
让Python代码更快运行的5种方法
Jun 21 Python
编写Python CGI脚本的教程
Jun 29 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
python 执行文件时额外参数获取的实例
Dec 18 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
python tkinter组件摆放方式详解
Sep 16 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
Python with标签使用方法解析
Jan 17 Python
Python基于当前时间批量创建文件
May 07 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
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
python opencv摄像头的简单应用
2019/06/06 Python
python flask搭建web应用教程
2019/11/19 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
python线程join方法原理解析
2020/02/11 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
什么是URL
2015/12/13 面试题
内刊编辑求职自荐书范文
2014/02/19 职场文书
假期安全教育广播稿
2014/10/04 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
SQL CASE 表达式的具体使用
2022/03/21 SQL Server