Python应用程序输出到syslog服务器



我正试图在谷歌上进行一些搜索(每5分钟左右循环一次)。当它命中时,我希望它将结果推送到系统日志服务器。我对蟒蛇很陌生,所以请原谅我的无知,我已经找了很长时间了,找不到我的问题的答案。

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

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

例如,我希望输出如下:日志类型、url、日期/时间

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

#!/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"))^SyntaxError:无效语法

您可以配置日志记录模块以输出到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登录到系统日志的主机名。有关详细信息,请参阅文档。

最新更新