[copr] master: Enable sending mails to admins on app error (af87130)

bkabrda at fedoraproject.org bkabrda at fedoraproject.org
Thu Jan 24 12:31:56 UTC 2013


Repository : http://git.fedorahosted.org/cgit/copr.git

On branch  : master

>---------------------------------------------------------------

commit af87130dda51728fabc6a11e4a4b7d19cb05954f
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Thu Jan 24 13:31:37 2013 +0100

    Enable sending mails to admins on app error


>---------------------------------------------------------------

 coprs_frontend/coprs/__init__.py |    3 ++-
 coprs_frontend/coprs/config.py   |    5 +++++
 coprs_frontend/coprs/log.py      |   27 +++++++++++++++++++++++++++
 3 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/coprs_frontend/coprs/__init__.py b/coprs_frontend/coprs/__init__.py
index f2ea8d4..a96ace9 100644
--- a/coprs_frontend/coprs/__init__.py
+++ b/coprs_frontend/coprs/__init__.py
@@ -29,8 +29,9 @@ def lookup_current_user():
 def page_not_found(message):
     return flask.render_template('404.html', message = message), 404
 
-import coprs.models
 import coprs.filters
+import coprs.log
+import coprs.models
 
 from coprs.views import coprs_ns
 from coprs.views.coprs_ns import coprs_builds
diff --git a/coprs_frontend/coprs/config.py b/coprs_frontend/coprs/config.py
index ef1578f..6218ea9 100644
--- a/coprs_frontend/coprs/config.py
+++ b/coprs_frontend/coprs/config.py
@@ -1,3 +1,4 @@
+import logging
 import os
 
 class Config(object):
@@ -17,6 +18,10 @@ class Config(object):
     # Token length, defaults to 30, DB set to varchar 255
     API_TOKEN_LENGTH = 30
 
+    # logging options
+    SEND_LOGS_TO = []
+    LOGGING_LEVEL = logging.ERROR
+
 class ProductionConfig(Config):
     DEBUG = False
 
diff --git a/coprs_frontend/coprs/log.py b/coprs_frontend/coprs/log.py
new file mode 100644
index 0000000..5fa61c3
--- /dev/null
+++ b/coprs_frontend/coprs/log.py
@@ -0,0 +1,27 @@
+import logging
+
+from coprs import app
+
+send_logs_to = app.config.get('SEND_LOGS_TO')
+level = app.config.get('LOGGING_LEVEL')
+
+formatter = logging.Formatter('''
+Message type:       %(levelname)s
+Location:           %(pathname)s:%(lineno)d
+Module:             %(module)s
+Function:           %(funcName)s
+Time:               %(asctime)s
+
+Message:
+
+%(message)s
+''')
+
+if not app.debug:
+    mail_handler = logging.handlers.SMTPHandler('127.0.0.1',
+                                                'copr-fe-error@{0}'.format(app.config['SERVER_NAME']),
+                                                send_logs_to,
+                                                'Yay, error in copr frontend occured!')
+    mail_handler.setFormatter(formatter)
+    mail_handler.setLevel(level)
+    app.logger.addHandler(mail_handler)



More information about the copr-devel mailing list