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

posted @ 2019-01-08 15:01  漏网的鱼和漏鱼的网  阅读(557)  评论(0编辑  收藏  举报