Django LOGGING dictConfig in settings.py: All specified handlers get ignored

Hi, it seems like for some reason I can’t set any logging output handlers in my project’s settings.py. Rest seems to be set. Does anyone know what I have to change to get it working?

settings.py LOGGING section:


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'style': '{',
            'format': '[{asctime}] {message}',
        }
    },
    'handlers': {
        'default': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'standard',
            'stream': 'ext://sys.stdout',
        },
    },
    'root': {
        'handler': 'logging.NullHandler',
        'level': 'CRITICAL',
    },
    'loggers': {
         'cd_manager': {
             'handler': 'default',
             'level': 'INFO',
             'propagate': False,
         },
         'cd_manager.models': {
             'propagate': True,
         },
         'makepkg': {
             'handler': 'default',
             'level': 'INFO',
             'propagate': False,
         },
         'makepkg.makepkg': {
             'propagate': True,
         }
    }
}

logging_tree.printout():

<--""
   Level CRITICAL
   |
   o<--"asyncio"
   |   Level NOTSET so inherits level CRITICAL
   |
   o   "cd_manager"
   |   Level INFO
   |   Propagate OFF
   |   |
   |   o<--"cd_manager.models"
   |       Level NOTSET so inherits level INFO
   |
   o<--[concurrent]
   |   |
   |   o<--"concurrent.futures"
   |       Level NOTSET so inherits level CRITICAL
   |
   o<--"django"
   |   Level INFO
   |   Handler Stream <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
   |     Level INFO
   |     Filter <django.utils.log.RequireDebugTrue object at 0x7fe0b4cbe3d0>
   |   Handler <AdminEmailHandler (ERROR)>
   |     Level ERROR
   |     Filter <django.utils.log.RequireDebugFalse object at 0x7fe0b4cbe2b0>
   |   |
   |   o<--[django.db]
   |   |   |
   |   |   o<--"django.db.backends"
   |   |       Level NOTSET so inherits level INFO
   |   |       |
   |   |       o<--"django.db.backends.schema"
   |   |           Level NOTSET so inherits level INFO
   |   |
   |   o<--"django.request"
   |   |   Level NOTSET so inherits level INFO
   |   |
   |   o<--[django.security]
   |   |   |
   |   |   o<--"django.security.csrf"
   |   |       Level NOTSET so inherits level INFO
   |   |
   |   o   "django.server"
   |   |   Level INFO
   |   |   Propagate OFF
   |   |   Handler Stream <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
   |   |     Level INFO
   |   |     Formatter <django.utils.log.ServerFormatter object at 0x7fe0b4c27fa0>
   |   |
   |   o<--"django.template"
   |   |   Level NOTSET so inherits level INFO
   |   |
   |   o<--[django.utils]
   |       |
   |       o<--"django.utils.autoreload"
   |           Level NOTSET so inherits level INFO
   |
   o<--[docker]
   |   |
   |   o<--[docker.api]
   |   |   |
   |   |   o<--"docker.api.build"
   |   |   |   Level NOTSET so inherits level CRITICAL
   |   |   |
   |   |   o<--"docker.api.image"
   |   |   |   Level NOTSET so inherits level CRITICAL
   |   |   |
   |   |   o<--"docker.api.swarm"
   |   |       Level NOTSET so inherits level CRITICAL
   |   |
   |   o<--"docker.auth"
   |   |   Level NOTSET so inherits level CRITICAL
   |   |
   |   o<--[docker.utils]
   |       |
   |       o<--"docker.utils.config"
   |           Level NOTSET so inherits level CRITICAL
   |
   o   "makepkg"
   |   Level INFO
   |   Propagate OFF
   |   |
   |   o<--"makepkg.makepkg"
   |       Level NOTSET so inherits level INFO
   |
   o<--"requests"
   |   Level NOTSET so inherits level CRITICAL
   |   Handler <NullHandler (NOTSET)>
   |
   o<--"urllib3"
   |   Level NOTSET so inherits level CRITICAL
   |   Handler <NullHandler (NOTSET)>
   |   |
   |   o<--"urllib3.connection"
   |   |   Level NOTSET so inherits level CRITICAL
   |   |
   |   o<--"urllib3.connectionpool"
   |   |   Level NOTSET so inherits level CRITICAL
   |   |
   |   o<--"urllib3.poolmanager"
   |   |   Level NOTSET so inherits level CRITICAL
   |   |
   |   o<--"urllib3.response"
   |   |   Level NOTSET so inherits level CRITICAL
   |   |
   |   o<--[urllib3.util]
   |       |
   |       o<--"urllib3.util.retry"
   |           Level NOTSET so inherits level CRITICAL
   |
   o<--"websocket"
       Level NOTSET so inherits level CRITICAL
       Handler <NullHandler (NOTSET)>

Thanks in advance!

The dict key within loggers is handlers, not handler, and is a list.

1 Like