Heroku'da Django günlüklerini görmüyorum


14

INFOHeroku günlüklerimde Django tarafından yapılan günlük girişlerini (bir düzeyde ) görmüyorum.

Bu benim yapılandırmam:

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

Kayıt girişlerini Heroku arayüzünde görmek istiyorum. Onları neden orada görmediğime dair bir fikrin var mı?


Sadece bir printşey yaparsan bir şey görüyor musun stdout?
anatoly techtonik

İki yıl oldu;)
Ram Rachum

3
Hâlâ cevapsız olduğunu gördüm. =)
anatoly techtonik

1
@RamRachum Çözülmüşse, bir cevap yazın veya bir şekilde kapatın - aksi takdirde insanların radarına çıkmaya devam edecektir.
Mike Fiedler

Yanıtlar:


1

In piton-alma-başlatılmış app, etiketlenmediyse bir günlüğüne için django, ERRORseviye günlükleri görünür herokugünlükleri, ancak INFOgünlükleri yok.

Etiketlenmemiş günlüklerde çalışmasını sağlamak djangoiçin aşağıdakine benzer bir yapılandırmaya ihtiyaç duyar (sizinkine benzer):

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

Bu nedenle, yapılandırmanızı Procfile da dahil olmak üzere python başlatma gibi olacak şekilde ayarlarsanız, umarım çalışması gerekir.

İşte django etiketli olmayan, eklediğim bir günlük 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')

İlk denediğimde sadece hata günlüğü ortaya çıktı. Önceki kodun üstündeki kod parçacığına günlük yapılandırmasını eklediğimde, bilgi ve hata günlükleri ortaya çıktı. Bu tüm ile DEBUG = False(olan repo kod değiştirildi DEBUG = True).

Boş dize anahtarına sahip olmak yerine, muhtemelen her şey günlüğe kaydedilir, loggerssadece boş dize ( '') ' den daha spesifik girişlere sahip olmak daha iyidir .

Son olarak, günlük dosyasında, orada INFO günlükleri konsolda görünmez bir durum veya Heroku kaydeder: o bir INFO günlüğü ise django.requestyalnızca gidecek senin yapılandırma ile, 'mail_admins'çünkü propagateolduğunu False. Bence bu durumda propagateayarlanmak daha anlamlı olur True.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.