2012-01-23 112 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

相關問題