No ver a Django inicia sesión en Heroku

14

No veo entradas de registro (a nivel de INFO) realizadas por Django en mis registros de Heroku.

Esta es mi configuración:

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'],
        },
    }
}

Me gustaría ver las entradas de registro en la interfaz de Heroku. ¿Alguna idea de por qué no los veo allí?

Ram Rachum
fuente
¿Ves algo si solo quieres printalgo stdout?
anatoly techtonik
Han pasado dos años;)
Ram Rachum
3
Descubrí que todavía no tiene respuesta. =)
anatoly techtonik
1
@RamRachum Si está resuelto, escriba una respuesta o ciérrela de alguna manera; de lo contrario, seguirá apareciendo en el radar de las personas.
Mike Fiedler

Respuestas:

1

En la aplicación Python-Getting- Start, para un registro que no está etiquetado django, los ERRORregistros de nivel se muestran en los herokuregistros, pero los INFOregistros no.

Para que funcione para los registros que no están etiquetados django, necesita una configuración como la siguiente (similar a la suya):

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

Entonces, si ajusta su configuración para que sea como Python-Getting-Start, incluido el Procfile, es de esperar que funcione.

Aquí hay un registro que no está etiquetado como django, que agregué 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')

Cuando lo probé por primera vez, solo apareció el registro de errores. Cuando agregué la configuración de registro en el fragmento de código sobre la anterior, aparecieron la información y los registros de errores. Todo esto es con DEBUG = False(cambiado desde el código en el repositorio, que tiene DEBUG = True).

Probablemente es mejor, en lugar de tener la clave de cadena vacía, por lo que todo se registra, tener loggersentradas más específicas que solo la cadena vacía ( '').

Finalmente, en su archivo de registro, hay un caso en el que los registros de INFO no aparecerán en la consola, o los registros de Heroku: si se trata de un registro de INFO django.request, con su configuración solo irá a 'mail_admins'porque propagateestá False. Creo que en este caso, tendría más sentido propagateestar configurado True.

Benjamin Atkin
fuente