Выход приложения Python на сервер системного журнала - PullRequest
5 голосов
/ 23 января 2012

Я пытаюсь выполнить поиск в Google (повторяется каждые 5 минут или около того).Когда он получает удар, я хочу отправить результаты на сервер системного журнала.Я очень плохо знаком с Python, поэтому, пожалуйста, прости невежество, я искал возрасты и не могу найти ответ на свой вопрос.

Я намерен добавить несколько запросов, ища разные результаты, в зависимости от результатов запроса.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 ("hit.log")) ^ SyntaxError: неверный синтаксис

1 Ответ

7 голосов
/ 23 января 2012

Вы можете настроить модуль журналирования для вывода в системный журнал, см. 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.См. Документы для получения дополнительной информации.

...