logging 的配置和使用

logging 的配置和使用

reference :

测试源码,example

import logging

nt = 'xwei'
# logging.basicConfig(filename='log/log_test.log',
# format='%(asctime)s, %(levelname)s:%(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',
# filemode='w', level=logging.INFO)

set up logging to file - see previous section for more details

w ,new file

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m/%d/%Y %H:%M:%S %p',
filename='log/log_test.log',
filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)

Now, we can log to the root logger, or any other logger. First the root...

logging.info('Jackdaws love my big sphinx of quartz.')

Now, define a couple of other loggers which might represent areas in your

application:

logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')

logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')

'application' code

logging.debug("this is debug.")
logging.info("this is info form %s." % nt)
logging.warning("this is warning from %s." % nt)

默认设置文件的level 是debug,基础上再设置console的格式。

程序分别在文件中和console里面保留了对应level的信息:

  • console 记录显示大于info level的信息
  • 文件中记录level 超过 debug 的信息

level设计

logging函数根据它们用来跟踪的事件的级别或严重程度来命名。标准级别及其适用性描述如下(以严重程度递增排序):

级别 数字值 何时使用
DEBUG 10 详细信息,典型地调试问题时会感兴趣。
INFO 20 证明事情按预期工作。
WARNING 30 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。
ERROR 40 由于更严重的问题,软件已不能执行一些功能了。
CRITICAL 50 严重错误,表明软件已不能继续运行了。

默认级别为 WARNING,表示只有该级别及其以上的事件会被跟踪,除非另外配置了logging包。

我希望:

  • 在console里面输出所有的交互信息,用debug level;
  • 在文件里面保存每次迭代完成的数据,用于分析画图,不要太多的中间数据,应该用info level。
  • logging 可以配置RotatingFileHandler保留循环文件的大小以及个数,不想保存太多的log信息。

posted on 2016-12-25 12:49  xweel  阅读(412)  评论(0)    收藏  举报

导航