django + gunicorn部署,日志丢失解决方法
近期部署了一个项目,使用的是django开发,服务器是centos7,宝塔+python项目管理器
使用项目管理器新建项目,会自动配置虚拟环境,安装库,启动项目,非常不错方便
项目采用gunicorn方式部署,题高服务性能
部署后发现一个问题,日志那边看不到网站的日志,只有gunicorn的日志,网上查了下资料,说是logging的问题,会导致日志丢失的问题
以下是解决方法
在setting.py末尾添加如下代码
LOG_PATH = os.path.join(BASE_DIR, 'logs') if not os.path.exists(LOG_PATH): os.makedirs(LOG_PATH, exist_ok=True) 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.TimedRotatingFileHandler', 'filename': os.path.join(LOG_PATH, 'info.log'), 'when': 'D', 'formatter': 'verbose', 'interval': 1, 'delay': True, 'backupCount': 5, 'encoding': 'utf-8' }, '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': { 'djangoblog': { 'handlers': ['log_file', 'console'], 'level': 'INFO', 'propagate': True, }, 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': False, } } }
如此日志就记录到了logs/info.log内