Exemple #1
0
    def init_app(self, app, *args, **kwargs):
        super().init_app(app,
                         service_name=app.config.get('APP_NAME', 'app'),
                         server_url=app.config.get('APM_SERVER_URL',
                                                   'http://apm:8200'),
                         logging=True,
                         debug=True,
                         capture_body='all')
        handler = LoggingHandler(client=self.client)
        handler.setLevel(logging.DEBUG)
        app.logger.addHandler(handler)
        self.is_initialized = True

        @app.before_request
        def apm_user_context():
            # importing over here as it won't work outside request context
            from flask import request
            initiator = request.headers.get('X-Initiator')
            if initiator:
                set_user_context(user_id=initiator)

@app.route('/bar')
def bar_route():
    return bar()


@elasticapm.capture_span()
def bar():
    extra()
    return "bar"


@elasticapm.capture_span()
def extra():
    return "extra"


@app.route('/oof')
def oof_route():
    raise Exception('oof')


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(os.environ['FLASK_PORT']))

    # Create a logging handler and attach it.
    handler = LoggingHandler(client=apm.client)
    handler.setLevel(logging.INFO)
    app.logger.addHandler(handler)
Exemple #3
0
        for i in range(1, 10):
            try:
                1 / 0
            except ZeroDivisionError:
                app.logger.error('Breninho is hereeeee',
                                 exc_info=True,
                                 extra={
                                     'am_i_agent_breno': True,
                                 })

            try:
                a = [1, 2, 3]
                print a[4]
            except IndexError:
                app.logger.error('Breno is here',
                                 exc_info=True,
                                 extra={
                                     'am_i_agent_breno': True,
                                 })

        return {'Heeeeeey': 'Im generating a lot of error to you'}


api.add_resource(ElasticBrenoResource, '/error')

if __name__ == '__main__':
    handler = LoggingHandler(client=apm.client)
    handler.setLevel('WARN')
    app.logger.addHandler(handler)
    app.run(host='0.0.0.0', port=9999, debug=True)
Exemple #4
0
# Configure logging
if os.environ['ELASTIC_APM_SERVICE_NAME'] and os.environ[
        'ELASTIC_APM_SERVER_URL']:
    # configure to use ELASTIC_APM in your application's settings from elasticapm.contrib.flask import ElasticAPM
    app.config['ELASTIC_APM'] = {
        # allowed app_name chars: a-z, A-Z, 0-9, -, _, and space from elasticapm.contrib.flask
        'APP_NAME': os.environ['ELASTIC_APM_SERVICE_NAME'],
        # 'SECRET_TOKEN': 'yourToken', #if you set on the APM server configuration
        'SERVER_URL':
        os.environ['ELASTIC_APM_SERVER_URL']  # your APM server url
    }

    apm = ElasticAPM(app)

    handler = LoggingHandler(client=apm.client)
    handler.setLevel(logging.WARN)
    app.logger.addHandler(handler)

# Example usage:
# app.logger.error('Failed to send: Invalid number',
#                  exc_info=True,
#                  extra={
#                      'uid': uid
#                  })

logger = log_manager.get_logger('api_manager')


@app.route("/ping")
def ping():
    return 'healthy', 200

@app.route('/bar')
def bar_route():
    return bar()


@elasticapm.capture_span()
def bar():
    extra()
    return "bar"


@elasticapm.capture_span()
def extra():
    return "extra"


@app.route('/oof')
def oof_route():
    raise Exception('oof')


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(os.environ['FLASK_PORT']))

    # Create a logging handler and attach it.
    handler = LoggingHandler(client=apm.client)
    handler.setLevel(logging.INFO)
    app.logger.addHandler(handler)