Python. Перенаправить stderr в файл журнала - PullRequest
1 голос
/ 12 января 2011

У меня есть сайт Django, работающий над торнадо и nginx.

Я взял этот модуль запуска торнадо script (tornading.py)

Затем я использую pythonopenid, который выводит некоторую информацию в sys.stderr.

В результате я получаю IOError.

Как я могу перенаправить его с помощью пакета регистрации?

Я думал о

f = open("myfile.log", "w")
sys.stderr = f

или

python tornado.py > /dev/null 2>&1

Но как лучше это решить?

Ответы [ 2 ]

4 голосов
/ 12 января 2011

Лучше всего было бы, если бы библиотека openid не печатала в stderr, а вместо этого использовала какой-то API-интерфейс ведения журнала (например, модуль ведения журнала). Я согласен с thkala, что изменение стороннего кода в долгосрочной перспективе не годится, поэтому вы должны исправить это, а затем предоставить исправление авторам openid.

Для продвижения сообщества открытого исходного кода это лучший способ решить его.

1 голос
/ 12 января 2011

Использование перенаправлений оболочки - это скорее обходной путь, чем решение, и это может быть не всегда возможно, в зависимости от того, как запускается скрипт.изменить сторонний код.Локальные изменения, даже незначительные, могут стать серьезной проблемой, когда вы решите, например, обновить указанный код до последней версии из апстрима.

...