我正在尝试让Logger为我的Django App工作。我用以下方式调用记录器:
logger = logging.getLogger(__name__)
logger.info("some stuff")
在views.py。
中的函数内部但是它不起作用,应该创建包含日志的文件但是没有写入任何内容,这里是设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters':{
'standard': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
},
},
'handlers': {
'file_INFO': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/site.logs'),
'maxBytes': 1024 * 1024 * 15, # 15MB
'backupCount': 10,
'formatter': 'standard',
},
'console_INFO': {
'level': 'INFO',
'class': 'logging.StreamHandler',
}
},
'loggers': {
'INFO': {
'handlers': ['file_INFO', ],
'level': 'INFO',
'propagate': True,
},
},
}
有什么想法吗?
谢谢!
答案 0 :(得分:1)
您已将记录器命名为“INFO”,但您已请求记录器__name__
。因此,您使用的记录器不是您想要的记录器。
最好的办法是使用根记录器,如下所示:
LOGGING = {
...
'root': {
'handlers': ['file_INFO', ],
'level': 'INFO',
},
}
所有记录器都将传播到根记录器(除非另有说明),这种设置足以满足90%以上的应用程序。如果您使用根记录器,则也不需要运行getLogger(__name__)
,只需使用logging.info("some stuff")
进行登录。