背景
项目需要把与知乎api对接时候返回不成功的信息记录下来,以及系统中所有try……catch……的地方都记录下来。
技术要点
django的日志模块基本就是把python的logging模块封装了下,有三个基本的logger (django, django.request, py.warning).显然用起来不方便,需要自己构建custom logging config.
参考了webforefront的这篇文章,我用每个app的名字建立一个logger,然后系统管理只让我打印到标准输出和标准错误输出,所以基本的handler就使用logging.StreamHandler就可以了 (之前尝试了打印到文件的log,但是放在项目目录中,这样不好。文章以及组长都建议放在/var/^/^.log的模式,需要在bash中给权限)。其他的formatter参考文档,没啥需要注意的。
遇到的问题及解决方案
没有遇到特别棘手的,主要就以下:
1.把配置文件放在哪里?如何在启动时默认运行?
要在setting里面设置,或者放在其他文件里面,import到setting里面。具体方法是:
CUSTOM_LOGGING = {
'version' = 1,
'disable_existing_loggers': True,
'formatters':……
'handlers':……
'loggers'……
}
但是任然没有用,必须加上:
logging.config.dictConfig(CUSTOM_LOGGING)
2.logger中定义的django不能使用handler
没有完全禁用之前的配置,需要加上:
LOGGING_CONFIG = None
把它放在CUSTOM_LOGGING之前