sentrylogs icon indicating copy to clipboard operation
sentrylogs copied to clipboard

Send logs from Nginx and other applications to Sentry.

============================ Sentry Logs |latest-version|

|build-status| |health| |python-support| |license|

Sentry Logs allows you to send logs to Sentry. Only Nginx error log is currently supported, but extending the library to support more log files is planned.

.. |latest-version| image:: https://img.shields.io/pypi/v/sentrylogs.svg :alt: Latest version on PyPI :target: https://pypi.python.org/pypi/sentrylogs .. |build-status| image:: https://travis-ci.org/mdgart/sentrylogs.svg?branch=master :alt: Build status :target: https://travis-ci.org/mdgart/sentrylogs .. |health| image:: https://landscape.io/github/mdgart/sentrylogs/master/landscape.svg?style=flat :target: https://landscape.io/github/mdgart/sentrylogs/master :alt: Code health .. |python-support| image:: https://img.shields.io/pypi/pyversions/sentrylogs.svg :target: https://pypi.python.org/pypi/sentrylogs :alt: Python versions .. |license| image:: https://img.shields.io/pypi/l/sentrylogs.svg :alt: Software license :target: https://github.com/mdgart/sentrylogs/blob/master/LICENSE.txt

How It Works

To install sentrylogs you can use pip or easy_install:

.. code-block:: bash

$ pip install sentrylogs

.. code-block:: bash

$ easy_install sentrylogs

This will install the module and will provide a new console command:

.. code-block:: bash

$ sentrylogs -h

usage: sentrylogs [-h] [--sentryconfig SENTRYCONFIG] [--sentrydsn SENTRYDSN]
                  [--daemonize] [--follow FOLLOW]
                  [--nginxerrorpath NGINXERRORPATH]

Send logs to Django Sentry.

optional arguments:
  -h, --help            show this help message and exit
  --sentryconfig SENTRYCONFIG, -c SENTRYCONFIG
                        A configuration file (.ini, .yaml) of some Sentry
                        integration to extract the Sentry DSN from
  --sentrydsn SENTRYDSN, -s SENTRYDSN
                        The Sentry DSN string (overrides -c)
  --daemonize, -d       Run this script in background
  --follow FOLLOW, -f FOLLOW
                        Which logs to follow, default ALL
  --nginxerrorpath NGINXERRORPATH, -n NGINXERRORPATH
                        Nginx error log path

Sentry DSN

We need to provide a Sentry DSN to send messages to the Sentry server. There are 3 options to do this:

#. Use the --sentryconfig command line argument to read the configuration file of your Sentry integration_, or #. Use the --sentrydsn command line argument to specify the DSN directly, or #. Provide an environment variable.

.. code-block:: bash

$ sentrylogs --sentryconfig /opt/myapp/config/pyramid.ini
$ sentrylogs --sentrydsn 'protocol://public:[email protected]/#'
$ export SENTRY_DSN='protocol://public:[email protected]/#' && sentrylogs

Log File Location

By default sentrylogs will assume the nginx log at /var/log/nginx/error.log. You can change this using the --nginxerrorpath argument.

Run as Daemon

If you use --daemonize the command will daemonize itself and run in background.

.. _Sentry integration: https://docs.getsentry.com/on-premise/clients/python/#deep-dive

How to Contribute

Please open an issue_ to discuss your plans for a pull request_. After writing code make sure your changes pass our quality gate before you push.

.. code-block:: console

# list all tox targets
tox -lv

# run all linting and tests
tox

# run tests just for Python 3.8
# (e.g. if you don't have all Pythons installed via pyenv)
tox -e py38

Please write tests! Test coverage is still low and the code quality needs to improve. Please help by adding tests with each contribution you make!

.. _open an issue: https://github.com/mdgart/sentrylogs/issues .. _pull request: https://github.com/mdgart/sentrylogs/pulls