本文共 1530 字,大约阅读时间需要 5 分钟。
我对服务器端app的开发还是没有入门的阶段,但是那啥,还是保持热情不是,于是乎今天特别想给自己的使用了Django的程序里加上日志(logging)。原因很简单,就是因为希望在Django提供的Debug页面的基础上,能够输出一些额外信息出来,也就是传说中的 printf 啦。。。
对了,其实我不太会用Python的各种高级的系统,比如logging system。。。比如logger, handler, formatter & filter。。。
但是Django的logging的documentation给出了一段简略的科普,已经基本够用了。但对于我来讲,唯独两个地方没有讲清楚:(1)如何配置logging;(2)如何使用logging。
嘛,貌似上面说的“基本够用”了,有点打脸了。
Bing了一下(别问我为何不Google一下,因为你懂的,这个时间段不要没事架梯子。),两个问题都解决了。首先,配置logging如同缘分注定一般,在settings.py文件里完成。这是我的直觉告诉我的,后来发现是正确的。直接在settings.py里添加配置信息,以下是从上复制下来的代码。
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/path/to/django/debug.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, },}这段配置代码里面最迷的就是名为 django 的logger。官方documentation貌似说本来就有默认的django的logger叫django。反正这里就明确配置了一个叫做django的logger。
然后是如何使用logger,这个也很迷。实际上我没有仔细看python的logging的documentation,最后是在如下网页上找到灵感的。
也就是说,要想使用名为django的logger,需要首先获取这个名为django的logger。具体操作如下
# import the logging libraryimport logging# Get an instance of a loggerlogger = logging.getLogger(__name__)def my_view(request, arg1, arg): ... if bad_mojo: # Log an error message logger.error('Something went wrong!')以上代码还是从上直接复制的。这里documentation上说使用__name__作为logger的名称有诸多好处,还可以用propagate功能。但是对于我们这个非常简化的logging系统来讲,完全不用__name__,明确用‘django’即可。这是获取到的就是刚刚配置过的名为django的logger了。后面就可以愉快地向日志文件输出了。