def testQuickLogger_LogSizeAndNumberAtSizeLimit(self): logger = quick_logger.QuickLogger('a_namespace', 'a_log_name') for i in xrange(quick_logger._MAX_NUM_RECORD): logger.Log(str(i % 2) * quick_logger._MAX_MSG_SIZE) logger.Save() logs = quick_logger.Get('a_namespace', 'a_log_name') self.assertEqual(len(logs), quick_logger._MAX_NUM_RECORD)
def testPost_LogAdded(self): self.testapp.post( '/bad_bisect?', { 'try_job_id': '1234', 'xsrf_token': xsrf.GenerateToken(users.get_current_user()), }) logs = quick_logger.Get('bad_bisect', 'report') self.assertEqual(1, len(logs))
def testQuickLogger_MultipleLogs_UsesCorrectOrder(self): logger = quick_logger.QuickLogger('a_namespace', 'a_log_name') for i in xrange(quick_logger._MAX_NUM_RECORD + 10): logger.Log(i) logger.Save() logs = quick_logger.Get('a_namespace', 'a_log_name') self.assertEqual(len(logs), quick_logger._MAX_NUM_RECORD) # First record is the last log added. self.assertEqual(logs[0].message, str(quick_logger._MAX_NUM_RECORD + 9))
def testQuickLogger_SaveAndGetNewLogEntry(self): template = '{message}{extra}' formatter = quick_logger.Formatter(template, extra='!') logger = quick_logger.QuickLogger('a_namespace', 'a_log_name', formatter) logger.Log('Hello world') logger.Save() logs = quick_logger.Get('a_namespace', 'a_log_name') self.assertEqual(len(logs), 1) self.assertEqual(logs[0].message, 'Hello world!')
def testQuickLogger(self): """Tests basic logging.""" template = '{message}{extra}' formatter = quick_logger.Formatter(template, extra='!') logger = quick_logger.QuickLogger('a_namespace', 'a_log_name', formatter) logger.Log('Hello %s', 'world') logger.Save() logs = quick_logger.Get('a_namespace', 'a_log_name') self.assertEqual(len(logs), 1) self.assertEqual(logs[0].message, 'Hello world!')
def post(self): """Retrieves logs. Request parameters: log_namespace: Namespace of log to retrieve. log_name: Name of log to retrieve. log_filter: Regex string to filter logs. log_size: Number of logs to get. after_timestamp: Get the logs after this timestamp. Outputs: JSON which contains a list of quick_logger.Log. """ log_namespace = self.request.get('namespace') log_name = self.request.get('name') log_filter = self.request.get('filter') log_size = self.request.get('size') after_timestamp = self.request.get('after_timestamp') logs = quick_logger.Get(log_namespace, log_name) if logs is None: logging.warning('Log name %s/%s does not exist.', log_namespace, log_name) self.response.out.write('[]') return if log_filter: logs = [l for l in logs if re.match(log_filter, l.message)] if after_timestamp: after_timestamp = float(after_timestamp) logs = [ l for l in logs if getattr(l, 'timestamp', l.index) > after_timestamp ] if log_size: logs = logs[0:int(log_size)] serializable_logs = [] for log in logs: serializable_logs.append({ 'id': getattr(log, 'id', log.index), 'timestamp': getattr(log, 'timestamp', log.index), 'message': log.message }) self.response.out.write(json.dumps(serializable_logs))
def testQuickLogger_LoggingWithId_UpdatesExistingLog(self): logger = quick_logger.QuickLogger('a_namespace', 'a_log_name') first_id = logger.Log('First message.') logger.Log('Second message.') logger.Log('Third message.') logger.Save() logger = quick_logger.QuickLogger('a_namespace', 'a_log_name') logger.Log('Updated first message.', first_id) logger.Save() logs = quick_logger.Get('a_namespace', 'a_log_name') self.assertEqual(3, len(logs)) self.assertEqual('Updated first message.', logs[0].message) self.assertEqual('Third message.', logs[1].message) self.assertEqual('Second message.', logs[2].message)