pyrollbar is a Python SDK for reporting exceptions, errors, and log messages to Rollbar.
-
import rollbar rollbar.init('POST_SERVER_ITEM_ACCESS_TOKEN', 'production') # access_token, environment try: main_app_loop() except IOError: rollbar.report_message('Got an IOError in the main loop', 'warning') except: # catch-all rollbar.report_exc_info() # equivalent to rollbar.report_exc_info(sys.exc_info())看起來
rollbar像是個 singleton,rollbar.init()並不會安插什麼 hook,還是要自己在 error handler 叫用rollbar.report_*()。 -
pyrollbar/__init__.py at v0.14.7 · rollbar/pyrollbar
就
rollbar.init()傳入的access_token與environment而言,只是把它存在 globalSETTINGS而已:def init(access_token, environment='production', scrub_fields=None, url_fields=None, **kw): ... SETTINGS['access_token'] = access_token SETTINGS['environment'] = environment
-
Django - Configuration - Python
-
If you'd like to be able to use a Django
LOGGINGhandler that could catch errors that happen OUTSIDE OF THE MIDDLEWARE and ship them to Rollbar, such as in celery job queue tasks that run in the background SEPARATE FROM WEB REQUESTS, do the following:Add this to the
handlerskey:'rollbar': { 'filters': ['require_debug_false'], 'access_token': 'POST_SERVER_ITEM_ACCESS_TOKEN', 'environment': 'production', 'class': 'rollbar.logger.RollbarHandler' },Then add the handler to the
loggerskey values where you want it to fire off.'myappwithtasks': { 'handlers': ['console', 'logfile', 'rollbar'], 'level': 'DEBUG', 'propagate': True, },
-
-
pyrollbar/app.py at v0.14.7 · rollbar/pyrollbar
import logging from flask import Flask import rollbar from rollbar.logger import RollbarHandler # (1) ACCESS_TOKEN = 'ACCESS_TOKEN' ENVIRONMENT = 'development' rollbar.init(ACCESS_TOKEN, ENVIRONMENT) logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # report WARNING and above to Rollbar rollbar_handler = RollbarHandler(history_size=3) # (2) rollbar_handler.setLevel(logging.WARNING) # gather history for DEBUG+ log messages rollbar_handler.setHistoryLevel(logging.DEBUG) # (2) # attach the history handler to the root logger logger.addHandler(rollbar_handler) app = Flask(__name__) @app.route('/') def root(): logger.info('about to call foo()') try: foo() except: logger.exception('Caught exception') # (3) return '<html><body>Hello World</body></html>' if __name__ == '__main__': app.run()- 雖然官方文件 是在 Django 看到 logging handler 的用法,但範例卻在 Flask。
- 什麼是 history ??
- 舉的例子不是很好懂,應該搭配
@app.errorhandler(Exception)來實作會比較好。
-
pyrollbar/logger.py at master · rollbar/pyrollbar
Hooks for integrating with the python logging framework. Usage: import logging from rollbar.logger import RollbarHandler rollbar.init('ACCESS_TOKEN', 'ENVIRONMENT') logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # report ERROR and above to Rollbar rollbar_handler = RollbarHandler() rollbar_handler.setLevel(logging.ERROR) # attach the handlers to the root logger logger.addHandler(rollbar_handler) -
pyrollbar/logger.py at v0.14.7 · rollbar/pyrollbar
雖然
RollbarHandler的 constructor 也提供access_token與environment參數,但內部也是轉呼叫rollbar.init():if access_token is not None: rollbar.init(access_token, environment, **kw) -
History for rollbar/logger.py - rollbar/pyrollbar
從 Git log 看來,
RollbarHandler第一次出現在 v0.6.0。
-
-
Install using pip:
pip install rollbar
Requirements
- Python 2.7, 3.3, 3.4, 3.5, or 3.6
- requests 0.12+ --> Python 內建對 HTTP 的支援應該是夠的
- A Rollbar account
-