Уведомления

Группа в Telegram: @pythonsu

#1 Июль 25, 2009 13:09:00

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

Хочется чтоб пользователя вывод программы не смущал, а вся информация оседала в логе.



Офлайн

#2 Июль 25, 2009 14:32:52

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Как перенаправить Traceback в лог файл вместо консоли?

Поможет модуль logging и basicConfig



Офлайн

#3 Июль 25, 2009 14:56:27

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

Для простых случаев сгодится просто

import sys
sys.stderr=open(FILENAME,'a+')
P.S. В идеале, ошибок вообще не должно быть. Постарайся перехватить исключения, которые могут быть.



Отредактировано (Июль 25, 2009 15:02:18)

Офлайн

#4 Июль 25, 2009 17:09:08

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

igor.kaist
В идеале, ошибок вообще не должно быть.
Хде ж он тот идеал? :)



Офлайн

#5 Июль 25, 2009 18:03:00

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

knkd
Хде ж он тот идеал? :)
Но перехватывать наиболее вероятные исключения все же надо.
Пример: программа коннектится к серверу. Если коннект не произошел, то лучше перехватить исключение, и сказать об этом пользователю в понятной ему форме, а в лог записать трейсбек.



Офлайн

#6 Июль 25, 2009 19:29:56

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

igor.kaist
Пример: программа коннектится к серверу. Если коннект не произошел, то лучше перехватить исключение, и сказать об этом пользователю в понятной ему форме, а в лог записать трейсбек.
Та сервера мне пока писать рано, да и незачем. У меня входные текстовые файлы заполненныи цифирями и буковами в разных кодировках.
Никак повлиять на их содержимое я не могу, они генерируются совершенно другими программами.
Большинство ошибок на фоне кодировок.
Всплывают сволочи, в самых неожиданных местах. Переписать бы всё, да руки не доходят, проще варнинги спрятать чтоб никто не видел :)



Отредактировано (Июль 25, 2009 19:34:47)

Офлайн

#7 Июль 25, 2009 22:25:31

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

Насчет сервера привел как пример.

knkd
У меня входные текстовые файлы заполненныи цифирями и буковами в разных кодировках.
По поводу этого могу посоветовать это http://chardet.feedparser.org
Поверь, легче будет ловить исключения. Если они возникают в самых неожиданных местах, то скорее нужно пересмотреть всю программу…
По теме вопрос закрыт? На правах оффтопа, советую всетаки не забивать на экзепшины. Сам много на этом спотыкался, когда в приложении, предназначенном для конечного пользователя, как раз таки выводил ошибки в лог, а об элементарном месседж боксе “неверный файл базы данных” забывал, что не есть юзер френдли :)



Офлайн

#8 Июль 25, 2009 23:47:16

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Как перенаправить Traceback в лог файл вместо консоли?

igor.kaist
Поверь, легче будет ловить исключения.
Та надо. Но проще мусор под коврик…
igor.kaist
По поводу этого могу посоветовать это http://chardet.feedparser.org
Проверил на файле с одной кодировкой ‘cp866’ и цифрами - не работает. Пишет что кодировка ‘None’.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version