Created
April 21, 2017 15:58
-
-
Save absent1706/96ed3e52cb2d14aa78160ead5bdf737a to your computer and use it in GitHub Desktop.
Send error to StackDriver Error Reporting service. See https://cloud.google.com/error-reporting/docs/setup/app-engine-flexible-environment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
STACKDRIVER_ERROR_FILE = '/var/log/app_engine/custom_logs/errors.log.json' | |
def log_stackdriver_err(request=None, exception=None, user=None): | |
''' | |
send error to StackDriver Error Reporting service | |
see https://cloud.google.com/error-reporting/docs/setup/app-engine-flexible-environment | |
''' | |
def make_path_to_file(filename): | |
if not os.path.exists(os.path.dirname(filename)): | |
try: | |
os.makedirs(os.path.dirname(filename), 0777) | |
except OSError as exc: | |
if exc.errno != errno.EEXIST: | |
raise | |
we_are_on_gae = 'GAE_MODULE_VERSION' in os.environ | |
if we_are_on_gae: | |
# https://cloud.google.com/error-reporting/docs/formatting-error-messages | |
data = { | |
'eventTime': datetime.datetime.utcnow().isoformat()+'000Z', | |
'serviceContext': { | |
'service': 'default', | |
'version': os.environ.get('GAE_MODULE_VERSION') | |
}, | |
'message': traceback.format_exc() if exception \ | |
else traceback.format_stack(), | |
'context': {} | |
} | |
if request: | |
data['context']['httpRequest'] = { | |
'method': request.method, | |
'url': request.url, | |
'userAgent': request.user_agent, | |
'referrer': request.referrer, | |
'remoteIp': request.remote_addr | |
} | |
if user: | |
data['context']['user'] = u'#{}: {} <{}>'.format(user.user_id, | |
user.full_name, | |
user.email) | |
make_path_to_file(STACKDRIVER_ERROR_FILE) | |
with open(STACKDRIVER_ERROR_FILE, 'a+') as file: | |
file.write('\n'+json.dumps(data)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment