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  Qwells  阅读(294)  评论(0编辑  收藏  举报

导航