码迷,mamicode.com
首页 > 编程语言 > 详细

如何使用Python的logging模块

时间:2015-08-31 23:10:46      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

几个学习连接:

Python官方链接:

https://docs.python.org/3.4/library/logging.html?highlight=logging

翻译(不过是2.3版本的)

http://crazier9527.iteye.com/blog/290018

另外的一个人的总结:

http://blog.csdn.net/fxjtoday/article/details/6307285

最好理解,写的最好的:

http://bbs.chinaunix.net/thread-3590256-1-1.html

 

我的学习总结基于http://bbs.chinaunix.net/thread-3590256-1-1.html

 


 

以一个简单的日志系统为例子进行说明:

目标:创建一个日志系统,这个日志系统不仅能把信息输出到控制台,还可以输出到文件。

 

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
#import logging包
import logging
  
#创建一个logger,getLogger的参数是logger的名字
logger=logging.getLogger(‘lylogger‘)
#设置logger的等级,大于等于这个等级的信息会被输出,其他会被忽略
logger.setLevel(logging.DEBUG)
  
#Handler是英文翻译为处理者,用于输出到不同的地方:Stream为控制台,File为文件
#以下创建的是输出到文件的handler,并把等级设为DEBUG
fh=logging.FileHandler(‘test.log‘)
fh.setLevel(logging.DEBUG)
  
#以下创建的是输出到控制台的handler,并把等级设为DEBUG
sh=logging.StreamHandler()
sh.setLevel(logging.DEBUG)
  
#下面指定了handler的信息输出格式,其中asctime,name,levelname,message都是logging的关键字
formatter=logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
fh.setFormatter(formatter)
sh.setFormatter(formatter)
  
#把Handler加入到logger中,可理解为给处理者在logger中安排了职位
logger.addHandler(fh)
logger.addHandler(sh)
  
#记录一条为”Hello,Arsenal!”的info日志信息
logger.info(‘Hello,Arsenal!‘)
print("process end!")

注意:

Logger.setLevel(lvl)
设置logger的level, level有以下几个级别:
NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出

 


 

思考题:

运行下面的日志系统,找出错误并改正。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import logging
  
logger=logging.getLogger(‘lylogger‘)
logger.setLevel(logging.DEBUG)
  
fh=logging.FileHandler(‘test.log‘)
fh.setLevel(logging.DEBUG)
  
sh=logging.StreamHandler()
sh.setLevel(logging.DEBUG)
  
formatter=logging.Formatter(‘%(asctime)s - %(name)s - %(levlename)s - %(message)s‘)
fh.setFormatter(formatter)
sh.setFormatter(formatter)
  
logger.addHandler(fh)
logger.addHandler(sh)
  
logger.info(‘Hello,Arsenal!‘)
print("process end!")

 

 


 

答案:

通过查看错误信息,定位Key :levlename,得知关键字levelname写错了。

如何使用Python的logging模块

标签:

原文地址:http://www.cnblogs.com/ArsenalfanInECNU/p/4774370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!