@Platinum96

Как логгировать два процесса на Twisted в один файл?

Добрый день! У меня имеется клиент и сервер написанные с помощью Twisted. Эти клиент и сервер работают по такому принципу: Клиент имеет словарь в котором хранятся ключи-значения. Клиент посылает серверу ключ, в свою очередь сервер отвечает клиенту каким-либо значением. Если сервер за 2 попытки ответил верным значением, то программа продолжает работу, если сервер ответил не верно, то программа прерывается. Лог в консоли выглядит примерно так:
Для клиента:

bot1>sending message: hi!
bot1>got message: hello you too
Right answer
bot1>sending message: green
bot1>got message: bonjourna
bot1>got wrong message, expected: apple, received: bonjourna
bot1>sending message: green
bot1>got message: bonjourna
bot1>got wrong message, expected: apple, received: bonjourna
Incorrect End of programm


Для сервера:

bot2>got message: hi!
bot2>sending answer: hello you too
bot2>got message: green
bot2>sending answer: bonjourna
bot2>got message: green
bot2>sending answer: bonjourna


В идеале необходимо такое:

bot1>sending message: hi!
bot2>got message: hi!
bot2>sending answer: hello you too
bot1>got message: hello you too
Right answer
bot1>sending message: green
bot2>got message: green
bot2>sending answer: bonjourna
bot1>got message: bonjourna
bot1>got wrong message, expected: apple, received: bonjourna
bot1>sending message: green
bot2>got message: green
bot2>sending answer: bonjourna
bot1>got message: bonjourna
bot1>got wrong message, expected: apple, received: bonjourna


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

Я уже пробовал добавить следующий код в сервер и клиент:
def handleData(self):
log.startLogging(open('A:/Pychat/foo.log', 'w'))


Но в итоге в логах я получаю следующее:

2017-01-04 14:20:06+0500 [-] Warning: primary log target selected twice at <C:\Python27\lib\site-packages\twisted\python\log.py:214> - previously selected at <C:\Python27\lib\site-packages\twisted\python\log.py:214>.  Remove one of the calls to beginLoggingTo.
2017-01-04 14:20:06+0500 [Echo,0,127.0.0.1] Log opened.
2017-01-04 14:20:06+0500 [-] bot2>got message: green
2017-01-04 14:20:06+0500 [-] bot2>sending answer: hi!
  2017-01-04 14:20:06+0500 [-] Warning: prim2017-01-04 14:20:06+0500 [-] bot1>got message: hi!
2017-01-04 14:20:06+0500 [-] bot1>got wrong message, expected: apple, received: hi!
2017-01-04 14:20:06+0500 [-] Incorrect End of programm
 calls to beginLoggingTo.
2017-01-04 14:20:06+0500 [Echo,0,127.0.0.1] Log opened.
2017-01-04 14:20:06+0500 [-] bot2>got message: green
2017-01-04 14:20:06+0500 [-] bot2>sending answer: hi!
ingTo.
2017-01-04 14:20:06+0500 [Echo,0,127.0.0.1] Log opened.
2017-01-04 14:20:06+0500 [-] bot2>got message: green
2017-01-04 14:20:06+0500 [-] bot2>sending answer: hi!


Я понимаю, что два процесса пытающие писать в один файл работать не будут, но как тогда мне решить мою проблему?
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
@TheGhost777
python web dev
Не понятно, почему клиент и сервер работают на 1 машине? Так будет всегда? В чем тогда смысл разделения на 2 программы? Если все таки клиент и сервер это разные машины, то удаленно напрямую нельзя записать файл.

По сути: можно реализовать возможность передачи от клиента к серверу строки которая должна быть записана в лог. Получится что клиент может слать 2 типа сообщений, само сообщение или лог.

send('msg:hi')
send('log:got wrong message...')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы