Ejemplo n.º 1
0
 def record_ticket(self, record, data, hash, app_id):
     """Records a log record as ticket."""
     cnx = self.engine.connect()
     trans = cnx.begin()
     try:
         q = self.tickets.select(self.tickets.c.record_hash == hash)
         row = cnx.execute(q).fetchone()
         if row is None:
             row = cnx.execute(self.tickets.insert().values(
                 record_hash=hash,
                 level=record.level,
                 channel=record.channel or u(''),
                 location=u('%s:%d') % (record.filename, record.lineno),
                 module=record.module or u('<unknown>'),
                 occurrence_count=0,
                 solved=False,
                 app_id=app_id))
             ticket_id = row.inserted_primary_key[0]
         else:
             ticket_id = row['ticket_id']
         cnx.execute(self.occurrences.insert().values(
             ticket_id=ticket_id,
             time=record.time,
             app_id=app_id,
             data=json.dumps(data)))
         cnx.execute(self.tickets.update().where(
             self.tickets.c.ticket_id == ticket_id).values(
                 occurrence_count=self.tickets.c.occurrence_count + 1,
                 last_occurrence_time=record.time,
                 solved=False))
         trans.commit()
     except Exception:
         trans.rollback()
         raise
     cnx.close()
Ejemplo n.º 2
0
    def record_ticket(self, record, data, hash, app_id):
        """Records a log record as ticket."""
        db = self.database
        ticket = db.tickets.find_one({'record_hash': hash})
        if not ticket:
            doc = {
                'record_hash':      hash,
                'level':            record.level,
                'channel':          record.channel or u'',
                'location':         u'%s:%d' % (record.filename, record.lineno),
                'module':           record.module or u'<unknown>',
                'occurrence_count': 0,
                'solved':           False,
                'app_id':           app_id,
                'occurrences':      []
            }
            ticket_id = db.tickets.insert(doc)
        else:
            ticket_id = ticket['_id']

        db.tickets.update({'_id': ticket_id}, {
            '$push': {
                'occurrences': {
                    'app_id':   app_id,
                    'data':     json.dumps(data),
                    'time':     record.time
                }
            },
            '$inc': {
                'occurrence_count':     1
            },
            '$set': {
                'last_occurrence_time': record.time,
                'solved':               False
            }
        })
        # We store occurrences in a seperate collection so that
        # we can make it a capped collection optionally.
        db.occurrences.insert({
            'ticket_id':    self._oid(ticket_id),
            'app_id':       app_id,
            'time':         record.time,
            'data':         json.dumps(data),
        })
Ejemplo n.º 3
0
    def record_ticket(self, record, data, hash, app_id):
        """Records a log record as ticket."""
        db = self.database
        ticket = db.tickets.find_one({'record_hash': hash})
        if not ticket:
            doc = {
                'record_hash': hash,
                'level': record.level,
                'channel': record.channel or u(''),
                'location': u('%s:%d') % (record.filename, record.lineno),
                'module': record.module or u('<unknown>'),
                'occurrence_count': 0,
                'solved': False,
                'app_id': app_id,
            }
            ticket_id = db.tickets.insert(doc)
        else:
            ticket_id = ticket['_id']

        db.tickets.update({'_id': ticket_id}, {
            '$inc': {
                'occurrence_count': 1
            },
            '$set': {
                'last_occurrence_time': record.time,
                'solved': False
            }
        })
        # We store occurrences in a seperate collection so that
        # we can make it a capped collection optionally.
        db.occurrences.insert({
            'ticket_id': self._oid(ticket_id),
            'app_id': app_id,
            'time': record.time,
            'data': json.dumps(data),
        })
Ejemplo n.º 4
0
 def record_ticket(self, record, data, hash, app_id):
     """Records a log record as ticket."""
     cnx = self.engine.connect()
     trans = cnx.begin()
     try:
         q = self.tickets.select(self.tickets.c.record_hash == hash)
         row = cnx.execute(q).fetchone()
         if row is None:
             row = cnx.execute(self.tickets.insert().values(
                 record_hash=hash,
                 level=record.level,
                 channel=record.channel or u(''),
                 location=u('%s:%d') % (record.filename, record.lineno),
                 module=record.module or u('<unknown>'),
                 occurrence_count=0,
                 solved=False,
                 app_id=app_id
             ))
             ticket_id = row.inserted_primary_key[0]
         else:
             ticket_id = row['ticket_id']
         cnx.execute(self.occurrences.insert()
             .values(ticket_id=ticket_id,
                     time=record.time,
                     app_id=app_id,
                     data=json.dumps(data)))
         cnx.execute(self.tickets.update()
             .where(self.tickets.c.ticket_id == ticket_id)
             .values(occurrence_count=self.tickets.c.occurrence_count + 1,
                     last_occurrence_time=record.time,
                     solved=False))
         trans.commit()
     except Exception:
         trans.rollback()
         raise
     cnx.close()
Ejemplo n.º 5
0
 def emit(self, record):
     self.socket.send(json.dumps(self.export_record(record)))
Ejemplo n.º 6
0
 def emit(self, record):
     self.socket.send(
         json.dumps(self.export_record(record)).encode("utf-8"))
Ejemplo n.º 7
0
 def emit(self, record):
     self.socket.send(json.dumps(self.export_record(record)))
Ejemplo n.º 8
0
 def emit(self, record):
     self.socket.send(json.dumps(self.export_record(record)).encode("utf-8"))