Python logging日志系统
写我小小的日志系统
配置logging有以下几种方式:
1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数;
2)创建一个日志配置文件,标签式的注明【loggers】、【handlers】、【formatters】、【filters】4大组件,前3者必传,后者选传,然后使用fileConfig()
函数来读取该文件的内容;
3)创建一个包含【loggers】、【handlers】、【formatters】、【filters】4大组件配置信息的字典dict,然后把它传递给dictConfig()
函数;
我目前采用的就是第3种方式。
1 # -*- coding: utf-8 -*- 2 import logging 3 from flask import Flask 4 from logging.config import dictConfig 5 6 app = Flask(__name__) 7 8 dictConfig({ 9 'version': 1, 10 'formatters': { 11 'standard': { 12 'format': '%(asctime)s.%(msecs)d|%(thread)d|%(levelname)s|%(message)s' 13 , 'datefmt': '%Y-%m-%d %H:%M:%S'} 14 , 'detail': { 15 'format': '%(asctime)s.%(msecs)d|%(thread)d|%(levelname)s|%(filename)s:%(funcName)s line %(lineno)d' 16 , 'datefmt': '%Y-%m-%d %H:%M:%S' 17 }, 18 }, 19 'filters': { 20 }, 21 'handlers': { 22 'default': { 23 'class': 'logging.handlers.RotatingFileHandler', # 将日志消息发送到磁盘文件,并支持日志文件按大小切割 24 'filename': '../logs/info.log', # 日志输出文件 25 'maxBytes': 1024 * 1024 * 5, # 文件大小 26 'formatter': 'standard', # 使用哪种formatters日志格式 27 }, 28 'console': { 29 'class': 'logging.StreamHandler', 30 'formatter': 'standard' 31 }, 32 'error': { 33 'level': 'ERROR', 34 'class': 'logging.handlers.RotatingFileHandler', 35 'filename': '../logs/error.log', 36 'maxBytes': 1024 * 1024 * 5, 37 'backupCount': 5, # 备份份数 38 'formatter': 'detail', 39 }, 40 'request_handler': { 41 'level': 'DEBUG', 42 'class': 'logging.handlers.RotatingFileHandler', 43 'filename': '../logs/script.log', 44 'maxBytes': 1024 * 1024 * 5, 45 'backupCount': 5, 46 'formatter': 'standard', 47 } 48 }, 49 'loggers': { 50 'flask': { 51 'handlers': ['default', 'console', 'error'], 52 'level': 'DEBUG', 53 'propagate': True 54 }, 55 'flask.request': { 56 'handlers': ['request_handler'], 57 'level': 'DEBUG', 58 'propagate': False, 59 }, 60 'weTest.flask': { 61 'handlers': ['error'], 62 'level': 'ERROR', 63 'propagate': True 64 } 65 } 66 }) 67 68 logger = logging.getLogger('flask') 69 logger.setLevel(logging.DEBUG) 70 71 if __name__ == '__main__': 72 try: 73 logger.info('info info') 74 logger.debug('debug info') 75 print 1 / 0 76 except Exception as err: 77 logger.error('error message:{0}'.format(err.message), exc_info=True) # 将异常异常信息添加到日志消息中
其他.py文件中应用
1 # test.py 2 3 from utils.log_helper import logger 4 5 try: 6 logger.info('hello world') 7 print 1/0 8 except Exception as err: 9 logger.error('error message:{0}'.format(err.message), exc_info=True)
参考&&转载
Python logging 官网 https://docs.python.org/2/library/logging.html
博文 https://www.cnblogs.com/yyds/p/6901864.html
转载于:https://www.cnblogs.com/taotaoblogs/p/10239012.html
Python logging日志系统相关推荐
- Python的日志系统logging.config
如果使用Python写一个比较大型的程序,你一定会用上日志系统.特别是Python这样的动态语言,很多错误都只能在运行的时候才能发现,一个好的日志系统对于Python程序相当重要.最简单的解决方案当然 ...
- python Logging日志记录模块详解
写在篇前 logging是Python的一个标准库,其中定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.Python logging 的配置由四个部分组成:Logger.Handl ...
- Python: logging日志模块简单示例
2019独角兽企业重金招聘Python工程师标准>>> Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用 ...
- Python logging 日志
介绍:在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录:飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在Python程序中想要记录程序在运行时所产生的日志信息,怎么 ...
- python logging日志分割_python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...
- 【测试开发】Python—logging日志封装
python日志模块,可以说在工程项目中应该很广泛,本文简单地介绍Logging封装模块的编写及使用.当前环境:python 3.6.8:编译环境:pycharm. 目录 1.logging简单配置 ...
- python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 原出处博客 1. logging日志模块介绍 ...
- python logging日志模块的使用
1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG ,INFO, WARNING ,ERROR, CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预 ...
- python logging日志输出个文件中
1 # -*- coding:utf-8 -*- 2 import logging # 引入logging模块 3 import os.path 4 import time 5 # 第一步,创建一个l ...
- Python logging 日志配置文件模板
基本参数配置介绍 [loggers] 定义多个logger记录器名字 [handlers] 定义多个处理器 [fomatters] 定义多个格式器 三个主要参数,定义完三个参数后就是进行不同的设置 具 ...
最新文章
- python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器
- MongoDB 是如何鼓励和激励开发者社区的
- OpenGL simpleclear简单刷背景的实例
- 数据结构-单链表实现
- 深度学习之基于Inception_ResNet_V2和CNN实现交通标志识别
- 【Envi风暴】Envi 5.4遥感影像镶嵌原来如此简单!
- 看国外女神级程序员,直播写代码一年的感悟
- 通过网络连接检测计算机病毒,网络安全习题及答案
- js需要删除页面中某个元素
- 笔记:修改host文件
- win10系统Windows 资源保护无法启动修复服务该如何解决?
- 详解Unity中的生命周期函数
- 算法精解----11、开地址哈希表
- 福特汉姆大学计算机科学专业,福特汉姆大学计算机科学专业
- 腾讯云自建k8s对接文件存储CFS
- laravel获取最后一条
- C++反射(Reflection)
- 联想小新14pro开机黑屏
- ChatGPT ,能替代程序员吗?
- 教学|3D建模之,游戏场景创建大致流程