logs.py 2.2 KB

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