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.py(DEBUG = True 和 DEBUG_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
。如果您添加级别为 INFO
的 root
条目,类似于 documented examples,您应该会看到来自其他模块的消息。或者,您可以在 loggers
键下为您的特定模块层次结构指定记录器名称,无论它是什么。 (您的示例仅覆盖 django
层次结构中模块的 WARNING
级别,即 Django 本身中的代码。)
在您提供的示例中,您仅为 'django' 记录器设置日志级别。该记录器控制 django.request
、django.server
、django.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
以下是我在我的 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.py(DEBUG = True 和 DEBUG_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
。如果您添加级别为 INFO
的 root
条目,类似于 documented examples,您应该会看到来自其他模块的消息。或者,您可以在 loggers
键下为您的特定模块层次结构指定记录器名称,无论它是什么。 (您的示例仅覆盖 django
层次结构中模块的 WARNING
级别,即 Django 本身中的代码。)
在您提供的示例中,您仅为 'django' 记录器设置日志级别。该记录器控制 django.request
、django.server
、django.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