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.