Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 11, 2008 19:28:25

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py HttpServer

Проблемка тут одна возникла, т.е. не то чтобы проблема…
Вобщем пишу на программу котоая помимо всего прочего функционала, должна иметь встроеный web сервер для удаленного администрирования. За основу взял сервер web.py(там как извесно шаблоны и прочая хня).
Запускаю его так

web.run(urls, globals(), web.reloader)
Я незнаю, может есть ещё какие способы его запуска, и может вообще этот тестовый сервер не предназначен для серьёзных задач, может не кошерно это, но мне показалось там всё оч миленько.
НО возникла трудность с логами, т.е. сервер лог всех событий выводит в консоль, мне необходимо это перехватить, я ХЗ как. Можно конечно тупо переписать код модуля, но я этого делать не хочу, да и там всего-то, одна строчка(модуль httpserver метод log строка 202):
self.format = '%s - - [%s] "%s %s %s" - %s'

......

def log(self, status, environ):
outfile = environ.get('wsgi.errors', web.debug)
req = environ.get('PATH_INFO', '_')
protocol = environ.get('ACTUAL_SERVER_PROTOCOL', '-')
method = environ.get('REQUEST_METHOD', '-')
host = "%s:%s" % (environ.get('REMOTE_ADDR','-'),
environ.get('REMOTE_PORT','-'))

#@@ It is really bad to extend from
#@@ BaseHTTPRequestHandler just for this method
time = self.log_date_time_string()

print >> outfile, self.format % (host, time, protocol,
method, req, status)
Что делать?



Отредактировано (Июнь 11, 2008 19:34:30)

Офлайн

#2 Июнь 11, 2008 21:35:58

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Web.py HttpServer

Тебе же русскким по белому практически все написали.

Желает брать outfile из environ ‘wsgi.errors’ - положи туда твой поток



Офлайн

#3 Июнь 11, 2008 22:01:06

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py HttpServer

Андрей Светлов
Тебе же русскким по белому практически все написали.

Желает брать outfile из environ ‘wsgi.errors’ - положи туда твой поток
Вносить изменения непосредственно в web.py я не хочу ибо не карачё, должны же быть другие пути…



Офлайн

#4 Июнь 12, 2008 07:09:55

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Web.py HttpServer

BION
Андрей Светлов
Тебе же русскким по белому практически все написали.
Желает брать outfile из environ ‘wsgi.errors’ - положи туда твой поток
Вносить изменения непосредственно в web.py я не хочу ибо не карачё, должны же быть другие пути…
Читай внимательно. Нужно править wsgi environ, а не web.py



Офлайн

#5 Июнь 12, 2008 09:30:22

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py HttpServer

j2a
BION
Андрей Светлов
Тебе же русскким по белому практически все написали.
Желает брать outfile из environ ‘wsgi.errors’ - положи туда твой поток
Вносить изменения непосредственно в web.py я не хочу ибо не карачё, должны же быть другие пути…
Читай внимательно. Нужно править wsgi environ, а не web.py
Господа!!!
Словарь
env = {'wsgi.version': (1, 0)
,'wsgi.url_scheme': 'http'
,'wsgi.input': self.rfile
,'wsgi.errors': sys.stderr
........
объявлен в классе WSGIHandler который входит в модуль httpserver.py, который в свою очередь является частью webpy.
Вы предлагаете внести изменения в httpserver.py? Это не вариант. Просто так достать и положить не получится, если я ошибаюсь, пожалст дайте пример.

***

Всё допёр,
продублировал у себя web.httpserver.runsimple как My_runsimple, внес там все необходимые изменения и далее
web.httpserver.runsimple = My_runsimple.
Всё работает, всем спасибо!



Отредактировано (Июнь 12, 2008 10:15:35)

Офлайн

#6 Июнь 12, 2008 12:18:59

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Web.py HttpServer



sys.stderr = open(“/tmp/log”, “a”, buffering=0)


вставь до вызова web.run()

Офлайн

#7 Июнь 12, 2008 14:08:21

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py HttpServer

slav0nic


sys.stderr = open(“/tmp/log”, “a”, buffering=0)


вставь до вызова web.run()
да, но мне необходимо ещё форматировать лог, поэтому остановлюсь на первом варианте. Но всё равно спасибо!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version