2012-01-23 81 views
4

我试图在谷歌上进行一些搜索(每5分钟左右循环)。 当它得到一个命中时,我希望它将结果推送到系统日志服务器。我对Python非常陌生,所以请原谅无知,我已经搜索了很多年,并且找不到我的问题的答案。Python应用程序输出到系统日志服务器

我打算添加多个查询,根据logevent不同的查询结果寻找不同的结果。

WARN "possible hit" 
CRITICAL "definatly a hit" 
etc 

我想输出是例如像: 日志类型,网址,日期/时间

下面是我一直在玩到目前为止的代码。我可以搜索并登录到一个文件,但不是我想如何。我只得到时间格式和偶数类型,我没有在日志中获得我的查询结果。我不知道如何登录到系统日志服务器。

#!/usr/bin/python 
import urllib 
import simplejson, logging 

query = urllib.urlencode({'q' : 'SEARCHTERMHERE'}) 
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: 
    logging.basicConfig(format='%(asctime)s %(message)s', filename='hits.log') 
    logging.warning ('Likley hit') 
    print i['url'] 

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

query = urllib.urlencode({'q' : 'SEARCHTERMHERE'}) 
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: 
    print i['url'] 
    logger = logging.getLogger() 
    logger.addHandler(SysLogHandler(address=('192.168.0.2', 514), facility=LOG_USER, socktype=socket.SOCK_DGRAM) 
    logger.addHandler(logging.FileHandler("hits.log")) 
    logging.warn("likley Hit: " + i['url']) 

我得到: 文件 “gog.py” 18行 logger.addHandler(logging.FileHandler( “hits.log”)) ^ 语法错误:无效的语法

回答

5

您可以配置记录模块,以输出到syslog,见http://docs.python.org/library/logging.handlers.html#sysloghandler

简单的例子:

from logging.handlers import SysLogHandler 
import logging 

logger = logging.getLogger() 
logger.addHandler(SysLogHandler('/dev/log')) 
logger.addHandler(logging.FileHandler("filename.log")) 

logging.warn("Hello world") 

上述日志使用Unix域套接字登录到本地系统日志。您还可以指定主机名以使用UDP登录到系统日志。有关更多信息,请参阅文档。

+0

感谢您的快速反应,我已经看到了,但要诚实地告诉您,我正在努力让它满足您的需求。你能举个例子吗?我看不出如何将结果存入日志并将其发送到系统日志服务器 – H20

+0

因此,您想要同时登录文件和系统日志服务器吗?在这种情况下,添加两个处理程序。 – codeape

+0

感谢您指出SysLogHandler生病从这里仔细看,你能让我知道我将如何得到我的结果到日志中?例如logging.warn('网址') – H20

相关问题