转:http://www.tuicool.com/articles/IV3meeE
logging
django使用python的内置模块logging来管理自己的日志,logging中四个重要的概念分别是
1、Loggers
2、Handlers
3、Filters
4、Formatters
Loggers(日志记录器),系统中的每一条日志都是由该组件进行记录的,每一个记录器都应该有其自己的名称并标记其最低记录的等级,在python中,定义了如下几个日志等级
DEBUG:所有等级中最低,其信息一般用来作为调试的辅助信息
INFO:程序的一般信息
WARNING:警告,通常用来对某些可能出现的错误且不会影响程序正常运行的信息进行警告
ERROR:错误,表示出现了某种错误
CRITICAL:奔溃,出现了严重级别的错误
日志文件中的每一条信息都是一条信息记录,都应该有其对应的级别,然后记录一些打印该条日志时的一些元数据,来告诉查阅者出现这条日志时程序的大致情况,例如调用栈或者状态码等等
当一条日志给到logger时,logger会对该条信息的级别与自身的级别进行比较,如果该日志级别不低于本身级别,logger就会进行下一步操作。相反,如果日志的信息级别比logger的低,那么他就会忽略这条日志,不会进行任何操作
当logger经过级别的比较之后u决定要对某条日志进行处理时,就会将该条日志交给Handlers
Handerls
Handlers(处理器):他来处理具体每条信息,例如是将日志打印到屏幕还是记录到文件或者发送至某个网络连接
和记录器logger一样,Handlers也有自己的记录级别,如果日志级别低于handler的级别,handler同样会忽略该条日志
更简便的是,一个logger可以拥有多个hander,而且不同的handler可以拥有不同的记录级别。这样,我们就可以根据不同的日志级别对同一个logger做不同的事情,例如我们可以将级别为WARNING和ERROR的日志打印到屏幕,而级别为CRITICAL级别的日子直接发送到管理者邮箱
Filters(过滤器):提供了传递给handler之前的附加功能,在通常情况下,一条日志信息只要达到logger的级别之后就会传递给handler处理,但是我们可以通过使用filter来对
日志进行额外的过滤。例如我们可以使用某个filter来控制只允许某个特定的源的ERROR级别的日志
Filter还运行在处理之前修改日志,例如降低或者提高日志的级别
filter可以在logger和handler中同时使用,而且多个filter会同时工作
Formatters
Formatters(格式化):定义了怎么显示内容,因为最终的日志都会以文本的形式展现,firmatter就是描述怎么来做这件事。formatter通常都是使用python格式化字符串的方法来对日志进行格式化。
每一个logger实例拥有与之对应级别的方法,调用这些方法就可以传递对应级别的日志信息
logger.debug()
logger.info()
logger.warning()
logger.error()
之所以整理这个,是因为调试在编程过程中占了很大的一部分,平时的时候u,可以使用pdb进行调试,但是在使用线程一类的时候,没办法使用pdb进行调试,这时候就可以使用logger,将需要知道的信息打印到日志里面进行观察
转:http://blog.csdn.net/shanliangliuxing/article/details/7716742这个博客里面显示了具体怎么使用logger
logger = logging.getLogger("django") # 为loggers中定义的名称----------------http://blog.csdn.net/novostary/article/details/52424116这篇博客里面记载了括号里面django的含义,
可以看到下面的标注区
其实就是使用了哪一个日志记录器。