尽管设置正确,Django 日志记录仍无法正常工作

问题描述 投票:0回答:1

问题与背景

嗨,我有一个使用 Django 2.2.28 和 python 3.5.2 的 Django 项目。

除了我正在尝试调试的一个功能外,实时站点运行良好。

我以前使用过日志记录,但由于某种原因它现在不起作用。

这是我的代码...

生产设置.py

我将此文件称为 wsgi.py。所有设置都可以正常工作,但

LOGGING
却不然。

from .settings import *

DEBUG = False

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/home/myuser/proj_container/debug.log',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': False,
        },
    },
}

views.py

import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

def some_func(request):
    ...
    if some_condition:
        logger.debug('In some_condition block')
    elif some_other_condition:
        logger.debug('In some_other_condition block')

我尝试过的事情

  1. 我已经尝试了上述方法,仅使用

    production_settings.py
    中的设置...没有任何显示。

  2. 与 1 相同,但在每个重要代码块处导入并调用

    logging

  3. 我阅读了logger.debug()

    的文档,以及我在上面实现的这个答案,如您所见。
    

  4. 我还重读了

    Django 日志记录文档。

  5. 我将

    LOGGING

    production_settings.py
    移动到
    settings.py
    ...昨天我修复了一个错误,其中django没有覆盖来自
    DATABASES
    settings.py
    中的
    production_settings.py
    变量,而是创建了一个sqlite3数据库并给出来自 
    settings.py
     的错误,修复它的唯一方法就是这样做。

  6. 对于我上面所做的每一个更改:我总是重新启动wsgi和网站

    (绑定的unix套接字服务,因为有超过1个站点在此服务器上运行,并且除了这个问题之外,两个站点都工作正常在其中之一)。它们的缓存值不冲突,我的文件路径是正确的,等等。

问题

为什么这不起作用?我错过了什么?

这之前在其他项目上效果很好,但我不知道为什么现在不行。

谢谢!

python python-3.x django logging django-views
1个回答
0
投票
这里有一个解决方法。我再次测试并测试了上面的代码,我发现它没有任何问题,甚至再次重新阅读了整个相关文档页面,所以这可能只是该版本上的一个错误。

无论如何,对于也遇到此问题的任何人来说,这里都有一个解决方案。

只需确保您的 Linux 用户有权写入以下文件路径。

视图.py

import logging logging.basicConfig(level=logging.DEBUG, filename='/home/myuser/path/to/debug.log') # will append by default, docs allow other values too. logger = logging.getLogger(__name__) def some_func(request): ... if some_condition: logger.debug('In some_condition block') logger.debug('Object type == {}'.format(type(some_condition.attribute['key']['nested_key']))) logger.debug('\n\n') # etc elif some_other_condition: logger.debug('In some_other_condition block')
settings.py 或 production_settings.py

# LOGGING = {...} # is not necessary since the above does it fine. Probably just a bug like I mentioned with DATABASES.
    
© www.soinside.com 2019 - 2024. All rights reserved.