From 02c11d094da144bddf27273df5681e3c437d7623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Mon, 22 Jun 2020 22:31:37 +0200 Subject: [PATCH 01/14] Rewrote readme. Closes #5 --- README.rst | 83 ++++++++++++++---------------------------------- demo/settings.py | 2 -- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/README.rst b/README.rst index c3bb9cc..bf2c3a1 100644 --- a/README.rst +++ b/README.rst @@ -12,21 +12,28 @@ Django Javascript Logger :target: https://pypi.python.org/pypi/django-js-logger .. image:: https://codecov.io/gh/sondrelg/django-js-logger/branch/master/graph/badge.svg + :alt: Code coverage :target: https://codecov.io/gh/sondrelg/django-js-logger/ .. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :alt: Code style black :target: https://pypi.org/project/django-swagger-tester/ .. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white + :alt: Pre-commit enabled :target: https://github.com/pre-commit/pre-commit +.. image:: http://www.mypy-lang.org/static/mypy_badge.svg + :alt: Checked with mypy + :target: http://mypy-lang.org/ + | -Simple Django app for logging Javascript's ``console.log`` logs to Django. +This is a very simple Django app for forwarding your Javascript ``console.log``'s, and console errors, to Django. -Useful for catching Javascript errors that are not logged by Django natively and would otherwise only be logged to the client's console. +Useful for catching Javascript errors that are not logged by Django natively and would otherwise only be logged to the client's console. We have found this useful for catching runtime errors, from JS running on top of our server-side rendered views. -The app works by posting all logs to an internal API; because of this, it should likely not be run in performance-sensitive production environments. +The way the app works is that it POSTs **all** events to an internal Django API. We haven't tested what performance impact this has, but it likely should not run in performance-sensitive production environments. .. raw:: html @@ -34,7 +41,7 @@ The app works by posting all logs to an internal API; because of this, it should flowchart

-If you want to implement this package, and require extra functionality please feel free to commit an issue or a PR. Otherwise, this currently does exactly what I need it to do, and I likely won't change it. +The package is open to contributions. Installation ------------ @@ -43,10 +50,14 @@ Installing with pip:: pip install django-js-logger +Installing with poetry:: + + poetry add django-js-logger + Quick start ----------- -1. Add "js_logger" to your INSTALLED_APPS settings:: +1. Add ``js_logger`` to your INSTALLED_APPS settings:: INSTALLED_APPS = [ ... @@ -57,61 +68,15 @@ Quick start path('js-logs/', include('js_logger.urls')), -3. Add the required static file to your project by running ``manage.py collectstatic``, or by manually adding the following code to ``/js-logging/js-logging.html``:: - - + JS_LOGGER = { + 'CONSOLE_LOG_LEVEL': 'INFO', + 'CONSOLE_ERROR_LEVEL': 'WARNING' + } +4. Add the required static file to your project by running ``manage.py collectstatic``. This should add a folder, ``django_js_logger`` with the file ``logger.js``. If this is not the case, you can copy the file manually from the demo project above. +5. Import ``logger.js`` in the views you wish to log from by adding a JS import to your templates:: -4. Include the template where ever you wish for logs to be sent in from (perhaps a base or header template):: - - - ... - {% include "js-logging/js-logging.html" %} - ... - - - -5. Add ``console.log`` as a logger in your logging configuration:: - - 'console.log': { - 'level': 'INFO', - ... - }, - -Note: This package will log all `console.log` calls in your frontend as ``INFO`` logs, and will log javascript errors as ``ERROR`` logs. + diff --git a/demo/settings.py b/demo/settings.py index d0e516e..693d76f 100644 --- a/demo/settings.py +++ b/demo/settings.py @@ -75,8 +75,6 @@ 'django': {'handlers': ['console'], 'level': 'INFO', 'propagate': True}, 'django.server': {'handlers': ['console'], 'level': 'INFO', 'propagate': False}, 'django.request': {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False}, - 'console_log': {'handlers': ['console'], 'level': JS_LOGGER['CONSOLE_LOG_LEVEL']}, - 'console_error': {'handlers': ['console'], 'level': JS_LOGGER['CONSOLE_ERROR_LEVEL']}, }, } From 86da4d511c8f6eb3a7c9c93bb7f30a74bc58b7b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Mon, 22 Jun 2020 22:34:24 +0200 Subject: [PATCH 02/14] Modifies readme --- README.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index bf2c3a1..426923e 100644 --- a/README.rst +++ b/README.rst @@ -33,7 +33,9 @@ This is a very simple Django app for forwarding your Javascript ``console.log``' Useful for catching Javascript errors that are not logged by Django natively and would otherwise only be logged to the client's console. We have found this useful for catching runtime errors, from JS running on top of our server-side rendered views. -The way the app works is that it POSTs **all** events to an internal Django API. We haven't tested what performance impact this has, but it likely should not run in performance-sensitive production environments. +The app works by posting *all* events to an internal Django API. Not sure what impact this has on an apps performance, but it likely should not run anywhere near performance-sensitive production environments. Primarily this is intended to be a debugging aid. + +A flowchart of the apps structure looks something like this: .. raw:: html From 14c6241839dbc8b23b4674c17daee34dbdbe471c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Mon, 22 Jun 2020 22:37:02 +0200 Subject: [PATCH 03/14] Modifies readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 426923e..29612d1 100644 --- a/README.rst +++ b/README.rst @@ -29,7 +29,7 @@ Django Javascript Logger | -This is a very simple Django app for forwarding your Javascript ``console.log``'s, and console errors, to Django. +This is a very simple Django app for forwarding console logs and console errors to dedicated Django loggers. Useful for catching Javascript errors that are not logged by Django natively and would otherwise only be logged to the client's console. We have found this useful for catching runtime errors, from JS running on top of our server-side rendered views. From 83f5a6115f5f9bbd8115b689301eb6f03b0cfc11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Mon, 22 Jun 2020 22:39:40 +0200 Subject: [PATCH 04/14] Modifies readme --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 29612d1..3e12416 100644 --- a/README.rst +++ b/README.rst @@ -31,11 +31,11 @@ Django Javascript Logger This is a very simple Django app for forwarding console logs and console errors to dedicated Django loggers. -Useful for catching Javascript errors that are not logged by Django natively and would otherwise only be logged to the client's console. We have found this useful for catching runtime errors, from JS running on top of our server-side rendered views. +Useful for catching Javascript errors that are not logged by Django natively and would otherwise only be logged to the client's console. Can be particularly useful if you have JavaScript running on top of our server-side rendered views. -The app works by posting *all* events to an internal Django API. Not sure what impact this has on an apps performance, but it likely should not run anywhere near performance-sensitive production environments. Primarily this is intended to be a debugging aid. +The app works by posting *all relevant events* to an internal Django API, which logs them to one of two loggers. Not sure what impact this has on an apps performance, but it likely should not run anywhere near performance-sensitive production environments. Primarily this is intended to be a debugging aid. -A flowchart of the apps structure looks something like this: +A flowchart of the app's structure looks something like this: .. raw:: html From 4a8e6959390b5564e7459f0454fac232ff06d944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Mon, 22 Jun 2020 22:42:09 +0200 Subject: [PATCH 05/14] Commented out the coverage workflow - it's not compatible with selenium testing currently --- .github/workflows/codecov.yml | 74 +++++++++++++++++------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index d4d41c1..9b6a086 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -1,37 +1,37 @@ -name: code coverage - -on: - push: - branches: - - master - -jobs: - codecov: - name: Code coverage - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - - name: Set up Python 3.8 - uses: actions/setup-python@v1 - with: - python-version: 3.8 - - name: Install poetry - run: | - python -m pip install --upgrade pip - pip install poetry - - name: Install dependencies - run: | - poetry install - - name: Test with pytest - run: | - poetry run pytest --cov=js_logger --verbose --color=yes --assert=plain --cov-report=xml - poetry run coverage report - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: ./coverage.xml - flags: unittests - name: codecov-umbrella - yml: ./codecov.yml - fail_ci_if_error: true +#name: code coverage +# +#on: +# push: +# branches: +# - master +# +#jobs: +# codecov: +# name: Code coverage +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@master +# - name: Set up Python 3.8 +# uses: actions/setup-python@v1 +# with: +# python-version: 3.8 +# - name: Install poetry +# run: | +# python -m pip install --upgrade pip +# pip install poetry +# - name: Install dependencies +# run: | +# poetry install +# - name: Test with pytest +# run: | +# poetry run pytest --cov=js_logger --verbose --color=yes --assert=plain --cov-report=xml +# poetry run coverage report +# - name: Upload coverage to Codecov +# uses: codecov/codecov-action@v1 +# with: +# token: ${{ secrets.CODECOV_TOKEN }} +# file: ./coverage.xml +# flags: unittests +# name: codecov-umbrella +# yml: ./codecov.yml +# fail_ci_if_error: true From 1d9a876e2de4342042eba4b984e3e4ac46ca58bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:11:23 +0200 Subject: [PATCH 06/14] Updated flowchart. Closes #10 --- docs/img/flowchart.png | Bin 25251 -> 27818 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/flowchart.png b/docs/img/flowchart.png index 31ceca6bac40a2a7a1b5dc6072284f7a64f0f052..395791a84a0498d13d00b768318eb90a42580b01 100644 GIT binary patch literal 27818 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 XuMeZ0=70YH{L?#Yc&1#-0sp@Mauztn literal 25251 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 From da22454d2c4801e1d668c5ca2f2e96b3ff64b80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:13:12 +0200 Subject: [PATCH 07/14] Update reamde --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 3e12416..e7268a3 100644 --- a/README.rst +++ b/README.rst @@ -39,7 +39,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html -

+

flowchart

From 4562df1402d8dd9d0f6caf48783ff3fc6000e341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:14:07 +0200 Subject: [PATCH 08/14] Update readme --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index e7268a3..caf511e 100644 --- a/README.rst +++ b/README.rst @@ -39,8 +39,8 @@ A flowchart of the app's structure looks something like this: .. raw:: html -

- flowchart +

+ flowchart

The package is open to contributions. From 5d45276110edbb4a93ce60dde39fbbd348057a49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:14:28 +0200 Subject: [PATCH 09/14] Update readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index caf511e..f85b737 100644 --- a/README.rst +++ b/README.rst @@ -40,7 +40,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html

- flowchart + flowchart

The package is open to contributions. From 74649e05f836e0923de282b6366808be56df4d9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:16:09 +0200 Subject: [PATCH 10/14] Update readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index f85b737..5a76f1f 100644 --- a/README.rst +++ b/README.rst @@ -40,7 +40,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html

- flowchart + flowchart

The package is open to contributions. From 60c52881ecc4aa30ec635a8b2f587b50f5869cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:16:32 +0200 Subject: [PATCH 11/14] Update readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 5a76f1f..801fa69 100644 --- a/README.rst +++ b/README.rst @@ -40,7 +40,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html

- flowchart + flowchart

The package is open to contributions. From 2fc7817e4c749a95e3a56a3289eb3f531b66a4f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:16:55 +0200 Subject: [PATCH 12/14] Update readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 801fa69..7f3ad31 100644 --- a/README.rst +++ b/README.rst @@ -40,7 +40,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html

- flowchart + flowchart

The package is open to contributions. From 578982d993965941d692216dc166543c154eb0da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:17:20 +0200 Subject: [PATCH 13/14] Update readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 7f3ad31..04c13f9 100644 --- a/README.rst +++ b/README.rst @@ -40,7 +40,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html

- flowchart + flowchart

The package is open to contributions. From a69d80640159cdc9e98ca3992a36e5a8b87344e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Lilleb=C3=B8=20Gundersen?= Date: Tue, 23 Jun 2020 22:17:34 +0200 Subject: [PATCH 14/14] Update readme --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 04c13f9..8011eb3 100644 --- a/README.rst +++ b/README.rst @@ -40,7 +40,7 @@ A flowchart of the app's structure looks something like this: .. raw:: html

- flowchart + flowchart

The package is open to contributions.