2016-11-30 73 views
1

我想让我的Django应用程序工作的记录器。我打电话给记录器:Django记录器创建文件,但不写入它

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, 
    }, 
}, 

}

任何想法?

谢谢!

回答

1

您已将您的记录器命名为'INFO',但您要求输入记录器__name__。所以你使用的记录器不是你想要的。

最好的办法是用根记录器,像这样:

LOGGING = { 
    ... 
    'root': { 
     'handlers': ['file_INFO', ], 
     'level': 'INFO', 
    }, 
} 

的所有记录将传播至根记录器(除非特别指出),这个设置是足够的应用程序超过90% 。如果你使用根记录器,你也不需要运行getLogger(__name__),你可以简单地使用logging.info("some stuff")登录。

+0

我添加了对记录器工作方式的误解。我认为“__name__”是记录器实例的名称,我在记录器设置中定义的是记录器可以根据例如日志记录票据的级别或名称它已发送的模块。 – Nicolas

相关问题