Aggregate log reports and don't report on transient errors
authorMagnus Hagander <magnus@hagander.net>
Sun, 15 Feb 2009 11:24:19 +0000 (11:24 +0000)
committerMagnus Hagander <magnus@hagander.net>
Sun, 15 Feb 2009 11:24:19 +0000 (11:24 +0000)
(by default anything less than 4 error reports are ignored)

logmailer.py
planet.ini.sample

index 7a74b367345b04e1a9a3c62dda3891a44a86c2f2..ca20c86466cd446c413a9d06f56807460f18c525 100755 (executable)
@@ -23,10 +23,15 @@ class LogChecker(object):
                
        def Check(self):
                c = self.db.cursor()
-               c.execute("""SELECT ts,name,info FROM planet.aggregatorlog
+               c.execute("""
+       SELECT name,info,count(*) as num FROM planet.aggregatorlog
        INNER JOIN planet.feeds ON feed=feeds.id 
        WHERE success='f' AND ts > CURRENT_TIMESTAMP-'24 hours'::interval
-       ORDER BY name,ts""")
+       GROUP BY name,info
+       HAVING count(*) > %s
+       ORDER BY num,name;
+""" % self.cfg.get('notify','minerrors'))
+
                if c.rowcount > 0:
                        s = """
 One or more of the blogs fetched in the past 24 hours caused an error
@@ -34,11 +39,8 @@ as listed below.
 
 """
                        last = ""
-                       for r in c:
-                               if not last == r[1]:
-                                       last = r[1]
-                                       s += "\n"
-                               s += "%s  %-20s  %s\n" % (r[0].strftime("%Y%m%d %H:%M:%S"), r[1][:20], r[2])
+                       for name,info,num in c:
+                               s += "(%3s times) %s (%s)\n" % (num, name, info)
                        
                        s += "\n\n"
 
index f63dc677319c6aa9943b34a8769a0926c2fbb003..42dff94fb76edb2a561977ef42ed2fa0228c00dd 100644 (file)
@@ -11,3 +11,4 @@ password=yeahthatssecret
 [notify]
 mailfrom=webmaster@postgresql.org
 mailto=planet@postgresql.org
+minerrors=3