http://blog.csdn.net/novostary/article/details/52424116
本文将通过一个实际的例子来说明如何配置 logging 模块。更多信息可以参考 Django 的官网文档。
配置信息需要在 setting.py 文件中进行添加。
setting.py
DEBUG = True # 通过这种方式可以打开 DEBUG 模式
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
}, # 针对 DEBUG = True 的情况
},
'formatters': {
'standard': {
'format': '%(levelname)s %(asctime)s %(pathname)s %(filename)s %(module)s %(funcName)s %(lineno)d: %(message)s'
}, # 对日志信息进行格式化,每个字段对应了日志格式中的一个字段,更多字段参考官网文档,我认为这些字段比较合适,输出类似于下面的内容
# INFO 2016-09-03 16:25:20,067 /home/ubuntu/mysite/views.py views.py views get 29: some info...
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'formatter':'standard'
},
'file_handler': {
'level': 'DEBUG',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': '/tmp/byod/byodadmin/byod.admin.log',
'formatter':'standard'
}, # 用于文件输出
'console':{
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
},
'loggers': {
'django': {
'handlers' :['file_handler', 'console'],
'level':'DEBUG',
'propagate': True # 是否继承父类的log信息
}, # handlers 来自于上面的 handlers 定义的内容
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
},
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
配置好之后,在代码中可按照如下方法使用
import logging
logger = logging.getLogger("django") # 为loggers中定义的名称
logger.info("some info...")
- 1
- 2
- 3
- 4
可用的函数主要有五种:
logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()
- 1
- 2
- 3
- 4
- 5
- 6
注:如果 level 设置为 DEBUG,打印的信息非常多。数据库的查询语句也会打印出来。
DEBUG 2016-09-03 16:24:46,543 /usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py utils