logs.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: urls.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-11-07 21:43:17 (CST)
  9. # Last Update:星期二 2017-9-19 12:55:28 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. import os
  14. import logging
  15. from logging.handlers import SMTPHandler
  16. from logging import Formatter
  17. def init_app(app):
  18. config = app.config
  19. logs_folder = os.path.abspath(
  20. os.path.join(os.path.dirname(__file__), os.pardir, 'logs'))
  21. if not os.path.exists(logs_folder):
  22. os.mkdir(logs_folder)
  23. formatter = Formatter('''
  24. Message type: %(levelname)s
  25. Location: %(pathname)s:%(lineno)d
  26. Module: %(module)s
  27. Function: %(funcName)s
  28. Time: %(asctime)s
  29. Message:
  30. %(message)s
  31. ''')
  32. info_log = os.path.join(logs_folder, config['INFO_LOG'])
  33. info_file_handler = logging.handlers.RotatingFileHandler(
  34. info_log, maxBytes=100000, backupCount=10)
  35. info_file_handler.setLevel(logging.INFO)
  36. info_file_handler.setFormatter(formatter)
  37. app.logger.addHandler(info_file_handler)
  38. error_log = os.path.join(logs_folder, config['ERROR_LOG'])
  39. error_file_handler = logging.handlers.RotatingFileHandler(
  40. error_log, maxBytes=100000, backupCount=10)
  41. error_file_handler.setLevel(logging.ERROR)
  42. error_file_handler.setFormatter(formatter)
  43. app.logger.addHandler(error_file_handler)
  44. if app.config["SEND_LOGS"]:
  45. from .common.helper import ThreadedSMTPHandler
  46. credentials = (config['MAIL_USERNAME'], config['MAIL_PASSWORD'])
  47. mailhost = (config['MAIL_SERVER'], config['MAIL_PORT'])
  48. mail_handler = ThreadedSMTPHandler(
  49. secure=(),
  50. mailhost=mailhost,
  51. fromaddr=config['MAIL_DEFAULT_SENDER'],
  52. toaddrs=config['RECEIVER'],
  53. subject='Your Application Failed',
  54. credentials=credentials)
  55. mail_handler.setLevel(logging.ERROR)
  56. mail_handler.setFormatter(formatter)
  57. app.logger.addHandler(mail_handler)