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()
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), })
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), })
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()
def emit(self, record): self.socket.send(json.dumps(self.export_record(record)))
def emit(self, record): self.socket.send( json.dumps(self.export_record(record)).encode("utf-8"))
def emit(self, record): self.socket.send(json.dumps(self.export_record(record)).encode("utf-8"))