0

我正在尝试在我的 Django 项目中设置日志记录...我的第一次尝试,据说很简单,到目前为止一直失败。

这是我在 settings.py 中的日志:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'filters': {
        # 'special': {
        #     '()': 'project.logging.SpecialFilter',
        #     'foo': 'bar',
        # },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            # 'filters': ['special']
        },
        'file':{
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': './logs/log_file1.log',
            'formatter': 'verbose',
        },
        'apps_handler':{
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': './logs/apps_logs.log',
            'formatter': 'verbose',
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        **'Equipment': {
            'handlers': ['console', 'apps_handler'],
            'level': 'INFO',
            # 'filters': ['special']
        }**
    }
}

正如这里所建议的:Django: logging only for my project's apps我试图将我的应用程序的日志隔离在一个单独的文件中,并且由于我的应用程序被命名为 Equipment 我制作了 Equipment logger

作为第一次尝试在 views.py 文件中的设备应用程序中,我尝试了以下操作:

**import logging

logger = logging.getLogger(__name__)**

@login_required
def dashboard(request):
    types = Type.objects.all().order_by('name')
    form = SubTypeForm(request.POST or None)
    mezzi_list = SubType.objects.filter(type__name__icontains='mezzi').order_by('name')
    form.fields['subType'].queryset = mezzi_list

    **logging.info('hello darling: %s' % mezzi_list)**

    context = {
        'types': types,
        'form': form
    }
    if request.method == 'POST':
        if form.is_valid():
            subType = form.cleaned_data['subType']
            type = subType.type
            return HttpResponseRedirect(reverse('equipment:item_create', args=(type.id, subType.id)))
        else:
            return render(request, 'equipment/equipment_dashboard.html', context)

    return render(request, 'equipment/equipment_dashboard.html', context)

一个非常简单的调用 info log 并传入一个变量,只是为了在我每次访问仪表板视图时测试配置。

问题。文件总是空的?我在这里想念什么?

非常感谢您的帮助

4

1 回答 1

0

拼写错误。它的:

logger.info('some message')

并不是:

logging.info('一些消息')

顺便说一句,我已经发布了在应用程序级别进行日志设置的最终解决方案: https ://stackoverflow.com/questions/16876045/django-logging-only-for-my-projects-apps

于 2021-03-28T14:08:29.813 回答