def send_log(params, stacktrace=None):
"""Joins the params dict with info like user id and then sends logs."""
scopes = ['https://www.googleapis.com/auth/logging.write']
filename = common.get_resource(
0640, 'resources', 'clusterfuzz-tools-logging.json')
credentials = ServiceAccountCredentials.from_json_keyfile_name(
filename, scopes=scopes)
http_auth = credentials.authorize(Http())
params['version'] = common.get_version()
params['user'] = os.environ.get('USER')
params['sessionId'] = get_session_id()
if 'success' in params:
prefix = ('successfully finished' if params['success'] else
'unsuccessfully finished')
else:
prefix = 'started'
props = [str(params['testcase_id'])]
if params['current']:
props.append('current')
if params['enable_debug']:
props.append('debug')
params['message'] = '%s %s (%s, %s).' % (
params['user'], prefix, params['command'], ', '.join(props))
if stacktrace:
params['message'] += '\n%s' % stacktrace
structure = {
'logName': 'projects/clusterfuzz-tools/logs/client',
'resource': {
'type': 'project',
'labels': {
'project_id': 'clusterfuzz-tools'}},
'entries': [{
'jsonPayload': params,
'severity': 'ERROR' if stacktrace else 'INFO'}]}
http_auth.request(
uri='https://logging.googleapis.com/v2/entries:write',
method='POST',
body=json.dumps(structure))
评论列表
文章目录