简单的日志文件示例为Django 1.3+

发行说明说:

Django 1.3为Python的日志模块添加了框架级别的支持。

这很好。 我想利用这一点。 不幸的是, 这些文档并没有把所有的东西都交给我,而是以完整的工作示例代码的forms呈现在银盘上,这些代码演示了这是多么的简单和有价值。

我如何设置这个时髦的新function,使我可以胡椒我的代码

logging.debug('awesome stuff dude: %s' % somevar) 

并看到文件“/tmp/application.log”填写

 18:31:59 Apr 21 2011 awesome stuff dude: foobar 18:32:00 Apr 21 2011 awesome stuff dude: foobar 18:32:01 Apr 21 2011 awesome stuff dude: foobar 

默认的Python日志logging和这个“框架级支持”有什么区别?

我真的很喜欢这里这是你的工作的例子! 真的很棒!

首先把它放在你的settings.py

 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", 'datefmt' : "%d/%b/%Y %H:%M:%S" }, }, 'handlers': { 'null': { 'level':'DEBUG', 'class':'django.utils.log.NullHandler', }, 'logfile': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': SITE_ROOT + "/logfile", 'maxBytes': 50000, 'backupCount': 2, 'formatter': 'standard', }, 'console':{ 'level':'INFO', 'class':'logging.StreamHandler', 'formatter': 'standard' }, }, 'loggers': { 'django': { 'handlers':['console'], 'propagate': True, 'level':'WARN', }, 'django.db.backends': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': False, }, 'MYAPP': { 'handlers': ['console', 'logfile'], 'level': 'DEBUG', }, } } 

现在这是什么意思?

  1. Formaters我喜欢与./manage.py runserver相同的风格
  2. 处理程序 – 我想要两个日志 – 一个debugging文本文件和一个信息控制台。 这使我可以深入挖掘(如果需要的话)并查看文本文件以查看底层发生了什么。
  3. logging器 – 这里是我们确定我们想要logging的地方。 一般Django得到WARN和以上 – exception(因此传播)是后端,我喜欢看到的SQL调用,因为他们可以疯狂..最后是我的应用程序,我有两个处理程序,并推动一切到它。

现在我该如何启用MYAPP来使用它…

根据文档把它放在你的文件的顶部(views.py)..

 import logging log = logging.getLogger(__name__) 

然后去做这件事。

 log.debug("Hey there it works!!") log.info("Hey there it works!!") log.warn("Hey there it works!!") log.error("Hey there it works!!") 

日志级别在这里解释和纯python 在这里 。

部分基于rh0diumbuild议的日志configuration和我自己做的一些研究 ,我开始组装一个Django项目,其中包含很好的日志logging默认值 – fail- nice -django 。

示例日志文件输出:

 2016-04-05 22:12:32,984 [Thread-1 ] [INFO ] [djangoproject.logger] This is a manually logged INFO string. 2016-04-05 22:12:32,984 [Thread-1 ] [DEBUG] [djangoproject.logger] This is a manually logged DEBUG string. 2016-04-05 22:12:32,984 [Thread-1 ] [ERROR] [django.request ] Internal Server Error: / Traceback (most recent call last): File "/Users/kermit/.virtualenvs/fail-nicely-django/lib/python3.5/site-packages/django/core/handlers/base.py", line 149, in get_response response = self.process_exception_by_middleware(e, request) File "/Users/kermit/.virtualenvs/fail-nicely-django/lib/python3.5/site-packages/django/core/handlers/base.py", line 147, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/kermit/projekti/git/fail-nicely-django/djangoproject/brokenapp/views.py", line 12, in brokenview raise Exception('This is an exception raised in a view.') Exception: This is an exception raised in a view. 

在README中解释了详细的用法,但本质上,您将logging器模块复制到Django项目,并from .logger import LOGGING的底部的from .logger import LOGGING添加。