Merge branch 'master' into 'master'

Update Extension Logger

Closes #1230

See merge request allianceauth/allianceauth!1206
This commit is contained in:
Ariel Rin 2020-05-27 02:17:43 +00:00
commit 667afe9051
4 changed files with 32 additions and 8 deletions

View File

@ -221,7 +221,7 @@ LOGGING = {
'backupCount': 5, # edit this line to change number of log backups 'backupCount': 5, # edit this line to change number of log backups
}, },
'extension_file': { 'extension_file': {
'level': 'DEBUG', 'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler', 'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'log/extensions.log'), 'filename': os.path.join(BASE_DIR, 'log/extensions.log'),
'formatter': 'verbose', 'formatter': 'verbose',

View File

@ -22,6 +22,10 @@ INSTALLED_APPS += [
] ]
# To change the logging level for extensions, uncomment the following line.
# LOGGING['handlers']['extension_file']['level'] = 'DEBUG'
# Enter credentials to use MySQL/MariaDB. Comment out to use sqlite3 # Enter credentials to use MySQL/MariaDB. Comment out to use sqlite3
DATABASES['default'] = { DATABASES['default'] = {
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',

View File

@ -14,20 +14,22 @@ def get_extension_logger(name):
Takes the name of a plugin/extension and generates a child logger of the extensions logger Takes the name of a plugin/extension and generates a child logger of the extensions logger
to be used by the extension to log events to the extensions logger. to be used by the extension to log events to the extensions logger.
The logging level is decided by whether or not DEBUG is set to true in the project settings. If The logging level is determined by the level defined for the parent logger.
DEBUG is set to false, then the logging level is set to INFO.
:param: name: the name of the extension doing the logging :param: name: the name of the extension doing the logging
:return: an extensions child logger :return: an extensions child logger
""" """
if not isinstance(name, str):
raise TypeError(f"get_extension_logger takes an argument of type string."
f"Instead received argument of type {type(name).__name__}.")
import logging import logging
from django.conf import settings
parent_logger = logging.getLogger('extensions')
logger = logging.getLogger('extensions.' + name) logger = logging.getLogger('extensions.' + name)
logger.name = name logger.name = name
logger.level = logging.INFO logger.level = parent_logger.level
if settings.DEBUG:
logger.level = logging.DEBUG
return logger return logger

View File

@ -12,4 +12,22 @@ logger = get_extension_logger(__name__)
``` ```
This works by creating a child logger of the extension logger which propagates all log entries This works by creating a child logger of the extension logger which propagates all log entries
to the parent (extensions) logger. to the parent (extensions) logger.
## Changing the Logging Level
By default, the extension logger's level is set to `DEBUG`.
To change this, uncomment (or add) the following line in `local.py`.
```python
LOGGING['handlers']['extension_file']['level'] = 'INFO'
```
*(Remember to restart your supervisor workers after changes to `local.py`)*
This will change the logger's level to the level you define.
Options are: *(all options accept entries of levels listed below them)*
* `DEBUG`
* `INFO`
* `WARNING`
* `ERROR`
* `CRITICAL`