Forum Webscript.Ru

Программирование => Perl => Тема начата: KillerWM от 06 Февраля 2008, 10:44:40

Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 06 Февраля 2008, 10:44:40
имеется скрипт который неполностью выполняет свою работу в каком месте и из-за чего вылетает неизвестно, как сделать чтобы ошибки скрипта выводились в лог файл?
Название: как зделать вывод ошибок в лог файл?
Отправлено: demond от 08 Февраля 2008, 13:23:53
можно сделать несколькими способами:
1) просто открываешь в начала скрипта файл и и везде где хочешь можешь писать в него содержимое переменных и тд.
2) можно смотреть содержимое переменных в процессе выполнения скрипта используя встроенную функцию warn, она не останавливает выполнение скрипта в отличие от die!
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 08 Февраля 2008, 14:14:51
Цитировать
demond:
можно сделать несколькими способами: 1) просто открываешь в начала скрипта файл и и везде где хочешь можешь писать в него содержимое переменных и тд. 2) можно смотреть содержимое переменных в процессе выполнения скрипта используя встроенную функцию warn, она не останавливает выполнение скрипта в отличие от die!


2 пункт не подходит везде warn или die не поставишь да и мне вывод не в браузер нужен а в файл потому что скрипт долго выполняется

1 пункт делал но проблема в том что запись в файл делается через буфер и при вылете скрипта по какойто ошибке, в файл лога буфер не записывается и лог остается пустой, а вот если скрипт нормально выходит и файл лога штатно закрывается то в него запись происходит
Название: как зделать вывод ошибок в лог файл?
Отправлено: demond от 08 Февраля 2008, 15:33:26
Цитировать
KillerWM:
1 пункт делал но проблема в том что запись в файл делается через буфер и при вылете скрипта по какойто ошибке, в файл лога буфер не записывается и лог остается пустой, а вот если скрипт нормально выходит и файл лога штатно закрывается то в него запись происходит

а что, писать в файл через буфер это такая задумка? просто создать отдельный файл для debug\'a и писать в него не сразу не получится?
Кроме того есть такой метод выявления ошибок: либо разбивать скрипт на части и тестить каждую часть в отдельности, либо встать какой-нибудь print и перемещать его по скрипту сверху вниз.
Название: как зделать вывод ошибок в лог файл?
Отправлено: It-sys от 08 Февраля 2008, 16:14:41
Поставить IIS и PerlIS - он все ошибки пишет в лог файл :-)
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 08 Февраля 2008, 16:18:21
Цитировать
demond:
а что, писать в файл через буфер это такая задумка? просто создать отдельный файл для debug\'a и писать в него не сразу не получится? Кроме того есть такой метод выявления ошибок: либо разбивать скрипт на части и тестить каждую часть в отдельности, либо встать какой-нибудь print и перемещать его по скрипту сверху вниз.


по умолчанию запись в файл командой print происходит через буфер как зделать чтобы без буфера писалось я незнаю.

для вывода ошибок я вставил эту строчку:
BEGIN{use CGI::Carp qw(carpout);open(LOG, ">>$0.err");carpout(LOG);close(LOG);}

но при вылете скрипта лог файл пуст вероятно из-за использования буфера, как это исправить?
Название: как зделать вывод ошибок в лог файл?
Отправлено: Yaroslav от 10 Февраля 2008, 00:48:49
open (ADD, ">>log.log");
print ADD "$_";
close (ADD);
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 10 Февраля 2008, 12:03:52
Цитировать
Yaroslav:
print ADD "$_";


и че эта хрень делает?
Название: как зделать вывод ошибок в лог файл?
Отправлено: Yaroslav от 10 Февраля 2008, 21:01:29
записывает в файл все что ты укажешь
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 10 Февраля 2008, 23:23:52
Цитировать
Yaroslav:
записывает в файл все что ты укажешь


мне надо чтобы ошибки в файл записывались, а не только все что мне надо, и при записи каждой строчки открывать и закрывать файл не шибко ли муторно
Название: как зделать вывод ошибок в лог файл?
Отправлено: ravshaniy от 11 Февраля 2008, 19:13:10
мне почемуто еще изначально показалось что задача поставлена неправильно. нужно не лог писать. а тесты. поэтому и не стал учавствовать в дискуссии.
Название: как зделать вывод ошибок в лог файл?
Отправлено: arto от 11 Февраля 2008, 19:57:46
open STDERR,"> file" ?
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 11 Февраля 2008, 21:19:32
Цитировать
arto:
open STDERR,"> file" ?


туда ошибки будут записываться через буфер или нет?
а то если через буфер то не пойдет так как буфер в файл запишется тока если файл закроют командой close, а если скрипт слетит в результате ошибки то программа до команды закрытия файла не дойдет и файл будет пустым.
Название: как зделать вывод ошибок в лог файл?
Отправлено: arto от 11 Февраля 2008, 21:27:25
STDERR небуферизован, by default.
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 11 Февраля 2008, 21:54:39
Цитировать
arto:
STDERR небуферизован, by default.


а open ведь через буфер с файлами работает.

завтра попробую, если попробую так:
open STDERR,"> file"
print STDERR "тест"

строка "тест" через буфер пойдет или нет ?
Название: как зделать вывод ошибок в лог файл?
Отправлено: Yaroslav от 14 Февраля 2008, 13:21:25
а что мешает изначально определить глде могут быть ошибки и поставить в этих местах запись в лог файл?
Название: как зделать вывод ошибок в лог файл?
Отправлено: arto от 14 Февраля 2008, 13:57:45
может эти ошибки в этих местах просто исправить, вместо записи их в лог?
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 14 Февраля 2008, 19:08:37
Цитировать
Yaroslav:
а что мешает изначально определить глде могут быть ошибки и поставить в этих местах запись в лог файл?

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


Цитировать
arto:
может эти ошибки в этих местах просто исправить, вместо записи их в лог?

еслиб знал какие ошибки и где происходят так бы и сделал
Название: как зделать вывод ошибок в лог файл?
Отправлено: demond от 01 Марта 2008, 16:32:48
KillerWM
А модули какие-нибудь используешь? Почти во всех модулях при вызове метода new есть параметр DEBUG. Присваиваешь ему 1 и смотришь поэтапное выполнение... :)
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 02 Марта 2008, 13:15:51
Цитировать
demond:
А модули какие-нибудь используешь? Почти во всех модулях при вызове метода new есть параметр DEBUG. Присваиваешь ему 1 и смотришь поэтапное выполнение...

только то что уде хостер поставил например
use Net::FTP;
use LWP::UserAgent;
use HTTP::Headers;
Название: как зделать вывод ошибок в лог файл?
Отправлено: demond от 03 Марта 2008, 23:39:07
нашел парамет DEBUG только у Net::FTP. Но я думаю этого может хватить. кроме того можно самому добавить в модули вывод добаговых сообщений!
Название: как зделать вывод ошибок в лог файл?
Отправлено: KillerWM от 04 Марта 2008, 10:36:41
Цитировать
demond:
нашел парамет DEBUG только у Net::FTP. Но я думаю этого может хватить. кроме того можно самому добавить в модули вывод добаговых сообщений!

как включить параметр DEBUG у Net::FTP ?
у меня доступа к модулям нет режима DEBUG только у Net::FTP мне нехватит еще надо на HTTP::Request