项目结构
|--DJANGOBLOG
|-- djangoblog
|-- settings.py
|-- blog
|-- views.py
|-- manager.py
settings.py 里 logger 配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'root': {
'level': 'INFO',
'handlers': ['console', 'log_file'],
},
'formatters': {
'verbose': {
'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d %(module)s] %(message)s',
}
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'log_file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': 'djangoblog.log',
'maxBytes': 16777216, # 16 MB
'formatter': 'verbose'
},
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
'null': {
'class': 'logging.NullHandler',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
# 这边填 django or djangoblog 为什么都能使用
'django': {
'handlers': ['log_file', 'console'],
'level': 'INFO',
'propagate': True,
},
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
}
}
}
views.py 里日志使用
logger = logging.getLogger(__name__)
logger.info("测试")
问题
views.py __name__ 从外部引用时对应的是 blog.views。
我在settings.py 里配置 LOGGING 的 logger,只有 django 、 django.request
为什么能打印出
[2022-05-07 14:36:30,387] INFO [blog.views.get_queryset_from_cache:66 views] 测试
'loggers': {
# 这边填 django or djangoblog 为什么都能使用
'djangoblog': {
'handlers': ['log_file', 'console'],
'level': 'INFO',
'propagate': True,
},
这里改成djangoblog 也能正常使用