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种方式。
# -*- coding: utf-8 -*-
import logging
from flask import Flask
from logging.config import dictConfig app = Flask(__name__) dictConfig({
'version': 1,
'formatters': {
'standard': {
'format': '%(asctime)s.%(msecs)d|%(thread)d|%(levelname)s|%(message)s'
, 'datefmt': '%Y-%m-%d %H:%M:%S'}
, 'detail': {
'format': '%(asctime)s.%(msecs)d|%(thread)d|%(levelname)s|%(filename)s:%(funcName)s line %(lineno)d'
, 'datefmt': '%Y-%m-%d %H:%M:%S'
},
},
'filters': {
},
'handlers': {
'default': {
'class': 'logging.handlers.RotatingFileHandler', # 将日志消息发送到磁盘文件,并支持日志文件按大小切割
'filename': '../logs/info.log', # 日志输出文件
'maxBytes': 1024 * 1024 * 5, # 文件大小
'formatter': 'standard', # 使用哪种formatters日志格式
},
'console': {
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'error': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'filename': '../logs/error.log',
'maxBytes': 1024 * 1024 * 5,
'backupCount': 5, # 备份份数
'formatter': 'detail',
},
'request_handler': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': '../logs/script.log',
'maxBytes': 1024 * 1024 * 5,
'backupCount': 5,
'formatter': 'standard',
}
},
'loggers': {
'flask': {
'handlers': ['default', 'console', 'error'],
'level': 'DEBUG',
'propagate': True
},
'flask.request': {
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False,
},
'weTest.flask': {
'handlers': ['error'],
'level': 'ERROR',
'propagate': True
}
}
}) logger = logging.getLogger('flask')
logger.setLevel(logging.DEBUG) if __name__ == '__main__':
try:
logger.info('info info')
logger.debug('debug info')
print 1 / 0
except Exception as err:
logger.error('error message:{0}'.format(err.message), exc_info=True) # 将异常异常信息添加到日志消息中
其他.py文件中应用
# test.py from utils.log_helper import logger try:
logger.info('hello world')
print 1/0
except Exception as err:
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
Python logging日志系统的更多相关文章
- Python logging(日志)模块
python日志模块 内容简介 1.日志相关概念 2.logging模块简介 3.logging模块函数使用 4.logging模块日志流处理流程 5.logging模块组件使用 6.logging配 ...
- 【python】日志系统
来源: http://blog.csdn.net/wykgf/article/details/11576721 http://www.jb51.net/article/42626.htm http:/ ...
- Python logging日志管理
import logging logger = logging.getLogger("simple_example") logger.setLevel(logging.DEBUG) ...
- python logging 日志轮转文件不删除问题
前言 最近在维护项目的python项目代码,项目使用了 python 的日志模块 logging, 设定了保存的日志数目, 不过没有生效,还要通过contab定时清理数据. 分析 项目使用了 logg ...
- python logging 日志轮转文件不删除问题的解决方法
项目使用了 logging 的 TimedRotatingFileHandler : #!/user/bin/env python # -*- coding: utf-8 -*- import log ...
- Python脚本日志系统
Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化脚本工具,工程结构如下,Com ...
- python logging日志模块
一.logging模块的简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不 ...
- 管理 python logging 日志使用
1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上INFO:确认一切按预期运行WA ...
- python logging 日志
logging与print 区别,为什么需要logging? 在写脚本的过程中,为了调试程序,我们往往会写很多print打印输出以便用于验证,验证正确后往往会注释掉,一旦验证的地方比较多,再一一注释比 ...
随机推荐
- servlet(1)
servlet类分级: 1.ServletConfig接口类:理解为读取servlet配置的类,里面有四个抽象方法如下: ①getServletName:获取servlet在web.xml中的名字 ② ...
- 1.openshift
openshit是红帽开源的容器云平台.
- 范性for语义以及pair和ipair的区别
详情参考 lua手册 1. 范性for语义 在了解pair和ipair前先简单了解下lua中的for循环,这里只阐述范性for循环的语义,范性 for 在自己内部保存迭代函数,实际上它保存三个值:迭代 ...
- 读取导入csv csv报错iterable expected, not float
示例代码import pandas as pdimport reimport csv data = pd.read_csv('nuojia.csv', encoding='utf-8')# print ...
- Python_001_开始学习的一些准备
从Hello World!开始,希望你能坚持一下,然后每一天有一点收获. ♥ 安装了pip和setuotools库: pip用于安装管理Python扩展包,setuptools用于分布Python ...
- BackGround
- logstash 自动重新加载配置
自动重新加载配置 为了可以自动检测配置文件的变动和自动重新加载配置文件,需要在启动的时候使用以下命令: ./bin/lagstash -f configfile.conf --config.reloa ...
- echarts 折线图自定义颜色与修改legend颜色
option4 = { title : { text: '', subtext: '' }, color:['#2db7f5','#ff6600','#808bc6'], //关键加上这句话 ...
- Hbase 客户端Scan
Hbase 客户端Scan 标签(空格分隔): Hbase HBase扫描操作Scan 1 介绍 扫描操作的使用和get()方法类似.同样,和其他函数类似,这里也提供了Scan类.但是由于扫描工作方式 ...
- HBase海量数据存储
1.简介 HBase是一个基于HDFS的.分布式的.面向列的非关系型数据库. HBase的特点 1.海量数据存储,HBase表中的数据能够容纳上百亿行*上百万列. 2.面向列的存储,数据在表中是按照列 ...