logger.info 在 Django 日志记录中不起作用

logger.info not working in Django logging

以下是我在我的 django settings.py 文件中使用的日志记录片段。所有 GET,POST 请求都被写入日志,但是当我写 logger.info("print something") 时,它没有在控制台中得到 printed/captured 以及日志文件

请提出一个解决方法来捕获 logger.info() 日志

views.py

import logging

logger = logging.getLogger(__name__)

def custom_data_generator(request):
    logger.info("print somethig") # NOT GETTING CAPTURED IN LOG FILE
    return somethig

settings.pyDEBUG = TrueDEBUG_MODE = False 在 settings.py 文件中)

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'simple': {
        'format': '[%(asctime)s] %(levelname)s|%(name)s|%(message)s',
        'datefmt': '%Y-%m-%d %H:%M:%S',
    },
},
'handlers': {
    'applogfile': {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': '/home/mahesh/Documents/refactor/unityapp/unity/media/myproject.log',
        'backupCount': 10,
        'formatter': 'simple',
    },
    'console': {
        'level': 'DEBUG',
        'class': 'logging.StreamHandler',
        'formatter': 'simple'
    }
},
'loggers': {
    'django': {
        'handlers': ['applogfile', 'console'],
        'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
    }
}
}

生成的日志数据如下

[2020-07-07 11:43:25] ERROR|django.server|"GET /a11y/project-dashboard/?

refnum=ACGLOBAL&env_id=4 HTTP/1.1" 500 92016
[2020-07-07 12:05:21] INFO|django.server|"GET /admin/ HTTP/1.1" 200 59501
[2020-07-07 12:05:21] INFO|django.server|"GET /admin/ HTTP/1.1" 200 59501
[2020-07-07 12:05:21] INFO|django.server|"GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 85692
[2020-07-07 12:05:21] INFO|django.server|"GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 86184
[2020-07-07 12:05:21] INFO|django.server|"GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 85876
[2020-07-07 12:05:26] INFO|django.server|"GET /admin/accessibility/axe_json/ HTTP/1.1" 200 1886434
[2020-07-07 12:05:27] INFO|django.server|"GET /admin/jsi18n/ HTTP/1.1" 200 3223
[2020-07-07 12:05:27] INFO|django.server|"GET /static/admin/js/vendor/jquery/jquery.js HTTP/1.1" 200 280364
[2020-07-07 12:05:27] INFO|django.server|"GET /static/admin/js/vendor/xregexp/xregexp.js HTTP/1.1" 200 128820
[2020-07-07 12:05:34] INFO|django.server|"GET /admin/accessibility/axe_json/?page_id=https%3A%2F%2Fjobs.chegg.com%2Fapplythankyou HTTP/1.1" 200 1868950
[2020-07-07 12:05:35] INFO|django.server|"GET /admin/jsi18n/ HTTP/1.1" 200 3223

可能是因为您的视图模块没有设置日志记录级别,所以它将继承根记录器的默认级别WARNING。如果您添加级别为 INFOroot 条目,类似于 documented examples,您应该会看到来自其他模块的消息。或者,您可以在 loggers 键下为您的特定模块层次结构指定记录器名称,无论它是什么。 (您的示例仅覆盖 django 层次结构中模块的 WARNING 级别,即 Django 本身中的代码。)

在您提供的示例中,您仅为 'django' 记录器设置日志级别。该记录器控制 django.requestdjango.serverdjango.template 等的日志级别。如果您想为自己的应用程序设置日志级别,则需要为该特定应用程序的记录器设置日志级别,或者使用如下配置为所有应用程序设置日志级别

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console_handler': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        # More info on '' (unnamed) loggers at the end of this comment
        '': {
            'level': 'INFO',
            'handlers': ['console_handler'],
        },
    },

}

''(未命名)记录器将处理来自所有记录器的记录。更多信息在这里:https://docs.djangoproject.com/en/dev/howto/logging/#configure-a-logger-mapping