Non vedendo Django accedere a Heroku


14

Non vedo voci di registro (a livello di INFO) create da Django nei miei registri Heroku.

Questa è la mia configurazione:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'not_development_filter': {
            '()': NotDevelopmentFilter,
        },
    },
    'handlers': {
        'console':{
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        },
        'null': {
            'class': 'django.utils.log.NullHandler',
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['not_development_filter'],
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        }
    },
    'loggers': {
        '': {
            'handlers': ['mail_admins', 'console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'py.warnings': {
            'handlers': ['console'],
        },
    }
}

Mi piacerebbe vedere le voci del registro nell'interfaccia di Heroku. Qualche idea sul perché non li vedo lì?


Vedi qualcosa se hai printqualcosa da fare stdout?
Anatoly Techtonik,

Sono passati due anni;)
Ram Rachum,

3
Ho scoperto che è ancora senza risposta. =)
anatoly techtonik,

1
@RamRachum Se viene risolto, scrivi una risposta o chiudila in qualche modo, altrimenti continuerà a comparire sul radar delle persone.
Mike Fiedler,

Risposte:


1

Nell'app Python per iniziare , per un registro che non è etichettato django, i ERRORregistri di livello vengono visualizzati nei herokuregistri, ma i INFOregistri no.

Per farlo funzionare per i log che non sono taggati django, ha bisogno di una configurazione come la seguente (simile alla tua):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        '': {
            'handlers': ['console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
            'level': 'INFO',
        },
    },
}

Quindi, se modifichi la tua configurazione in modo che sia come iniziare a usare Python, incluso Procfile, si spera che funzioni.

Ecco un registro che non è taggato django, che ho aggiunto a views/hello.py:

import logging
logger = logging.getLogger(__name__)

# Create your views here.
def index(request):
    logger.error('testing logging!')
    logger.info('testing info logging')
    logger.debug('testing debug logging')

    # return HttpResponse('Hello from Python!')
    return render(request, 'index.html')

Quando l'ho provato per la prima volta, è apparso solo il registro degli errori. Quando ho aggiunto la configurazione di registrazione nello snippet di codice sopra quello precedente, sono state visualizzate le informazioni e i log degli errori. Questo è tutto con DEBUG = False(modificato dal codice nel repository, che ha DEBUG = True).

Probabilmente è meglio, piuttosto che avere la chiave stringa vuota, quindi tutto è registrato, per avere una voce più specifica loggersdella semplice stringa vuota ( '').

Infine, nel tuo file di registro, c'è un caso in cui i registri INFO non verranno visualizzati sulla console o registri Heroku: se si tratta di un registro INFO django.request, con la tua configurazione andrà solo 'mail_admins'perché propagateè False. Penso che in questo caso, avrebbe più senso propagateessere impostato su True.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.