博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[野路数] Django中使用logging
阅读量:2134 次
发布时间:2019-04-30

本文共 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了。后面就可以愉快地向日志文件输出了。

你可能感兴趣的文章
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
Leetcode C++ 剑指 Offer 09. 用两个栈实现队列
查看>>
Leetcode C++《每日一题》20200707 112. 路径总和
查看>>
云原生 第十一章 应用健康
查看>>
Leetcode C++ 《第202场周赛》
查看>>
云原生 第十二章 可观测性:监控与日志
查看>>
Leetcode C++ 《第203场周赛》
查看>>
云原生 第十三章 Kubernetes网络概念及策略控制
查看>>
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
查看>>