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

Python应用程序输出到syslog服务器,python,unix,syslog,system-administration,Python,Unix,Syslog,System Administration,我试图在谷歌上做一些搜索(大约每5分钟循环一次)。 当它成功时,我希望它将结果推送到syslog服务器。我对python非常陌生,所以请原谅我的无知,我已经搜索了很多年,找不到我问题的答案 我打算添加多个查询,根据logevent不同的查询结果查找不同的结果 WARN "possible hit" CRITICAL "definatly a hit" etc 例如,我希望输出如下: 日志类型、url、日期/时间 下面是到目前为止我一直在使用的代码。我可以搜索并登录到一个文件,但我不想这样做。我

我试图在谷歌上做一些搜索(大约每5分钟循环一次)。 当它成功时,我希望它将结果推送到syslog服务器。我对python非常陌生,所以请原谅我的无知,我已经搜索了很多年,找不到我问题的答案

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

WARN "possible hit"
CRITICAL "definatly a hit"
etc
例如,我希望输出如下: 日志类型、url、日期/时间

下面是到目前为止我一直在使用的代码。我可以搜索并登录到一个文件,但我不想这样做。我只获取时间和偶数类型的格式,没有在日志中获取查询结果。我不知道如何登录到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”)) ^
SyntaxError:无效语法

您可以将日志记录模块配置为输出到syslog,请参阅

简单的例子:

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登录到syslog的主机名。有关更多信息,请参阅文档。

谢谢您的快速回复,我已经看到了,但老实说,我很难忍受。你能给我举个例子吗?我看不出如何将结果写入日志并将其发送到syslog服务器,所以您想同时登录到文件和syslog服务器?在这种情况下,添加两个处理程序。感谢您指出SysLogHandler,我将从那里仔细查看,您能告诉我如何将结果输入日志吗?例如logging.warn('url')codeape我正试图从(我的原始帖子)将结果从一个windows框中获取到syslog服务器(远程)中您的三行日志设置代码不应该在循环中。将它移到循环之外,这样它只执行一次。