Không thấy nhật ký Django trên Heroku


14

Tôi không thấy các mục nhật ký (ở cấp độ INFO) được tạo bởi Django trong nhật ký Heroku của tôi.

Đây là cấu hình của tôi:

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

Tôi muốn xem các mục nhật ký trong giao diện Heroku. Bất cứ ý tưởng tại sao tôi không nhìn thấy chúng ở đó?


Bạn có thấy bất cứ điều gì nếu bạn chỉ printmột cái gì đó để stdout?
anatoly techtonik

Đã hai năm rồi;)
Ram Rachum

3
Tôi thấy nó vẫn chưa được trả lời. =)
anatoly techtonik

1
@RamRachum Nếu nó được giải quyết, hãy viết câu trả lời hoặc đóng nó bằng cách nào đó - nếu không nó sẽ tiếp tục bật lên trên radar của mọi người.
Mike Fiedler

Câu trả lời:


1

Trong ứng dụng bắt đầu python , đối với nhật ký không được gắn thẻ django, ERRORnhật ký cấp sẽ hiển thị trong herokunhật ký, nhưng INFOnhật ký thì không.

Để làm cho nó hoạt động đối với các nhật ký không được gắn thẻ django, nó cần một cấu hình như sau (tương tự như của bạn):

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

Vì vậy, nếu bạn điều chỉnh cấu hình của mình để giống như python-bắt đầu, bao gồm cả Procfile, hy vọng nó sẽ hoạt động.

Đây là nhật ký không được gắn thẻ django, mà tôi đã thêm vào 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')

Khi tôi lần đầu tiên thử nó, chỉ có nhật ký lỗi xuất hiện. Khi tôi thêm cấu hình ghi nhật ký trong đoạn mã phía trên đoạn mã trước, thông tin và nhật ký lỗi sẽ hiển thị. Đây là tất cả với DEBUG = False(thay đổi từ mã trong repo, có DEBUG = True).

Có lẽ tốt hơn là, thay vì có khóa chuỗi trống, vì vậy mọi thứ được ghi lại, để có một loggersmục cụ thể hơn so với chỉ chuỗi trống ( '').

Cuối cùng, trong log file của bạn, có một trường hợp INFO bản ghi sẽ không xuất hiện trên giao diện điều khiển, hoặc Heroku đăng nhập: Nếu nó là một bản ghi INFO để django.request, với cấu hình của bạn nó sẽ chỉ đi đến 'mail_admins'propagateFalse. Tôi nghĩ rằng trong trường hợp này, nó sẽ có ý nghĩa hơn propagateđể được đặt thành True.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.