Витая регистрация - PullRequest
       2

Витая регистрация

8 голосов
/ 16 августа 2010

У меня есть три процесса, работающих под моим витым реактором: Orbited, WSGI (работает django) и сам Twisted.

В настоящее время я использую

log.startLogging(sys.stdout)

Когда все журналы направлены в одно и то же место, возникает слишком много наводнений.

Одна строка моего журнала из WSGI:как это:

2010-08-16 02:21:12-0500 [-] 127.0.0.1 - - [16/Aug/2010:07:21:11 +0000] "GET /statics/js/monitor_rooms.js HTTP/1.1" 304 - "http://localhost:11111/chat/monitor_rooms" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8"

Время повторяется в основном дважды.Я думаю, что я должен использовать свой собственный форматтер, но, к сожалению, я не могу найти его в документах Twisted (там нет ничего при входе)

  1. Каков наилучший способ ведения журналов из 3 источников?
  2. Какие kwargs я передаю в какую функцию в twisted.log, чтобы настроить свой собственный форматер (startLogging не содержит ответа)
  3. Что является лучшим решением, чем то, что я предложил?(У меня нет особого опыта в настройке логгеров.)

Ответы [ 2 ]

11 голосов
/ 03 мая 2011

Вы можете использовать ключевое слово system для twisted.python.log.msg, чтобы настроить сообщение.

Предположим, у вас есть:

log.msg("Service ready for eBusiness!", system="enterprise")

Вы получите вывод в журнале так:

2010-08-16 02:21:12-0500 [enterprise] Service ready for eBusiness!

После этого вы можете добавить каждую из своих услуг system="wsgi/orbited/..." к своим log.msg и log.err вызовам.

Я нашел это копание в источнике в прошлый раз, когда я работал с Twisted.

1 голос
/ 23 августа 2010

Хех. Я думаю именно об этой проблеме. Я придумал отдельное приложение Twisted, которое записывает полученные сообщения через сокет. Вы можете настроить ведение журнала Python для отправки в сокет и настроить ведение журнала Twisted для отправки в ведение журнала Python. Таким образом, вы можете получить все, чтобы отправить сообщения журнала одному процессу (который затем использует протоколирование Python для записи их на диск).

У меня есть некоторые начальные доказательства кода концепции в http://www.acooke.org/cute/APythonLog0.html

Главное, что не хватает, было бы неплохо указать, какое сообщение пришло из какого источника. Пока не знаю, как лучше это добавить (один из подходов - запустить службу на трех разных портах и ​​использовать разные префиксы для каждого).

PS Как работает Орбитальный? Это в моем списке следующий ...

...