django 日志记录 - 无法将日志打印到文件

时间:2021-03-27 12:41:48

标签: python django logging django-logging

我正在尝试在我的 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 记录器

作为第一次尝试在我的设备应用程序中的 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)

使用传入的变量对信息日志进行非常简单的调用,只是为了在我每次访问仪表板视图时测试配置。

问题。文件总是空的? 我在这里错过了什么?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

拼写错误。 它是:

logger.info('some message')

而不是:

logging.info('some message')

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