zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    在不同的浏览器下FORM及它的小伙伴们默认样式的CSS属性值是不全然一致
    思考博客园的机器人攻击,想到我们可能也需要开启iptables
    大数据量的Mysql数据库备份策略
    win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
    Mysql的碎片查看与处理
    "个性化空间"性能优化方案设计初步
    假期结束后的工作安排
    GZIP压缩占用CPU大吗?
    媒体云平台
    关于二级缓存的设计思路
  • 原文地址:https://www.cnblogs.com/taotaoblogs/p/10239012.html
Copyright © 2011-2022 走看看