in processors/logging.py [0:0]
def process(self, output_var='logging'):
if 'mode' not in self.config:
raise NotConfiguredException(
'No Cloud Logging operation specified.')
if 'resourceNames' not in self.config:
raise NotConfiguredException(
'No Cloud Logging resource names specified.')
credentials, credentials_project_id = google.auth.default()
project = self._jinja_expand_string(
self.config['project'],
'project') if 'project' in self.config else credentials_project_id
if not project:
project = credentials.quota_project_id
logging_service = discovery.build(
'logging', 'v2', http=self._get_branded_http(credentials))
resource_names = self._jinja_expand_list(self.config['resourceNames'])
log_filter = self._jinja_expand_string(
self.config['filter']) if 'filter' in self.config else ''
order_by = self._jinja_expand_string(
self.config['orderBy']
) if 'orderBy' in self.config else 'timestamp asc'
if self.config['mode'] == 'logging.entries':
request_params = {
"resourceNames": resource_names,
"filter": log_filter,
"orderBy": order_by,
}
msg_format = self._jinja_expand_string(
self.config['format']) if 'format' in self.config else 'full'
ret = []
while True:
log_request = logging_service.entries().list(
body=request_params)
log_response = log_request.execute()
if 'entries' in log_response:
if msg_format == 'text-only' or msg_format == 'with-timestamps':
for entry in log_response['entries']:
if 'textPayload' in entry:
if msg_format == 'with-timestamps':
ret.append('%s %s' %
(entry['receiveTimestamp'],
entry['textPayload']))
else:
ret.append(entry['textPayload'])
else:
ret += log_response['entries']
if 'nextPageToken' in log_response:
request_params['pageToken'] = log_response['nextPageToken']
else:
break
return {output_var: ret}
return {output_var: None}