Python应用输出到syslog服务器
我正在尝试每隔大约5分钟在谷歌上进行一些搜索。当搜索到结果时,我想把这些结果发送到一个syslog服务器。我对Python非常陌生,所以请原谅我的无知,我搜索了很久也找不到我问题的答案。
我打算添加多个查询,根据不同的查询结果来寻找不同的结果,这样日志事件也会有所不同。
WARN "possible hit"
CRITICAL "definatly a hit"
etc
我希望输出的格式比如说是:日志类型、网址、日期/时间。
下面是我目前在尝试的代码。我可以搜索并记录到一个文件中,但不是我想要的格式。我只能获取时间和事件类型的格式,但日志中没有我的查询结果。而且我完全不知道怎么把日志记录到一个syslog服务器。
#!/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")) ^ 语法错误:无效的语法
1 个回答
10
你可以设置日志模块,让它输出到系统日志(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将日志发送到系统日志。想了解更多信息,可以查看文档。