日志文件中重复的日志行有问题

时间:2012-01-23 15:05:14

标签: python

我一直在努力使这一整天正常工作,它几乎完成了我正在得到的一个奇怪的问题。搜索查询中找到的每个结果都按预期记录,但第一个结果记录一次,第二个结果记录两次,第三个结果记录三次等。

任何想法如何摆脱重复? Example of logs

#!/usr/bin/python
import urllib
import simplejson 
import logging
from logging.handlers import SysLogHandler

query = urllib.urlencode({'q' : 'test'})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' \
      % (query)
search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
results = json['responseData']['results']
for i in results:
    logger = logging.getLogger()
    logger.addHandler(SysLogHandler(address=('192.168.0.2', 514)))
    logger.addHandler(logging.FileHandler("hits.log"))
    logging.warn(i['url'])
    print i['url']

3 个答案:

答案 0 :(得分:4)

因为你每次都在for循环中添加一个新的处理程序。在循环外执行此操作,然后仅执行循环内的实际logging.warn

答案 1 :(得分:4)

我有类似的问题,但我需要每次在for循环中添加一个新的处理程序。因此,删除循环内的处理程序对我没有帮助。

当你创建这样的处理程序时:

hdl = logging.FileHandler("hits.log")

你需要像这样删除它:

logger.removeHandler(hdl)

答案 2 :(得分:3)

正如你没有接受答案,正如丹尼尔所说,你需要

logger = logging.getLogger('')
logger.addHandler(logging.FileHandler("hits.log"))
logger.addHandler(SysLogHandler(address=('192.168.0.2', 514)))

for loop之外。