| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > catalyst Debug |
| Автор: gcc 11.12.2010, 18:11 | ||
| поставил Catalyst на хостинг, ничего не менял хочу посмотреть отладку, все что он пишет, но в файлах error.log ничего нету! на хостинге apache20 на серверах freebsd,linux такого не было... все с отлдки было в error.log как получить логи, все что он пишет логирует?? ЗЫ: интересует выремя выполнение. UPD: он пишет в общий лог, а не в лог-файл сайта как заставить его писать в лог-файл сайта или в файл какой-то?
|
| Автор: NuINu 12.12.2010, 21:04 |
| разреши владельцу процесса апач писать в этот файл ), этого достаточно опс, сори, у каталиста ведь свой веб сервер? ну вообщем юзеру от имени которого запускается веб процесс надо дать права на запись. |
| Автор: gcc 12.12.2010, 21:58 |
| у каталиста есть свой веб-сервер, НО сейчас он работает в apache20 в режиме mod_perl и он "строчит" все в общий лог, на сервере есть php, много сайтов, пользователей и все другие... можно ли заставить его писать логи в файл? ...нужно же смотреть отладку, все то что он пишет. |
| Автор: NuINu 12.12.2010, 22:49 |
| можно узнать как ты открываешь error.log в каталисте юзаешь вот этот модуль? Catalyst::Plugin::Log::Handler при записи в лог файл с веб сервера возникают только две проблемы: 1) нет прав доступа на запись у владельца процесса. 2) поскольку веб процесс может запускаться в chroot окружении - неправильно указан путь доступа к файлу все что пишет приложение в stderr перехватыватся апачем и складывается в общий лог, что бы этого не было можно в ручную изменить у данного процесса и переопределить stderr если тебе это надо, те ты хочешь отделить вывод своего приложения от всех других, то и переоткрой stderr и укажи его на свой файл. собственно разницы никакйо нет запускается ли он отдельным процессом или через мод перл аппача, главное КТО запустил это приложение. еще раз - ПРОВЕРЬ ПРАВА у запустившего процесс. может ли он записывать в фалй еррор лог? |
| Автор: gcc 1.1.2011, 10:17 | ||||||||||||||
| NuINu, кстати, эта проблема еще есть! права, проверили, все нормально. тут http://search.cpan.org/~pepe/Catalyst-Plugin-Log-Handler-0.08/lib/Catalyst/Plugin/Log/Handler.pm конфиг, стоит в YAML в YAML выдает ошибку:
а модуль стоит
тут http://search.cpan.org/~pepe/Catalyst-Plugin-Log-Handler-0.08/lib/Catalyst/Plugin/Log/Handler.pm как это
написать в конфиге MyApp,pm, точно не знаю пробовал
вылетает:
|
| Автор: gcc 1.1.2011, 10:50 | ||||
Log::Dispatch пропускает такие некоторые варнинги, очень много этого:
min_level - указывал по разному.... |
| Автор: NuINu 1.1.2011, 14:29 |
| про конфиг: в корне директории своего проект создаешь(или он автоматически создается - непомню) файл с названием проекта и расширением yml там и прописываешь эту фигню Log::Handler: file: filename: /var/log/myapp.log fileopen: 1 mode: append newline: 1 впрочем вот здесь ты указываешь имя конфига(в головном модуле эта запись): __PACKAGE__->config( name => 'MyApp' ); информацию о том какой форматер загрузить ConfigLoader берет из расширения файла как вообще пользоватья внешним конфигом прописано здесь: perldoc Catalyst::Manual::Tutorial::MoreCatalystBasics про ошибку ямл: чудес на свете не бывает! на первый взгляд модуль установлен, так же к нему есть путь в @INC. однако по факту не рабоатет. тогда проверь - может ли пользователь от имени которого ты запускаешь приложене прочитать файл: /usr/local/lib/perl5/site_perl/5.8.9/Catalyst/Plugin/Config/YAML.pm cat /usr/local/lib/perl5/site_perl/5.8.9/Catalyst/Plugin/Config/YAML.pm соответсвенно нет смысла проверять права доступа к файлу /var/log/myapp.log - если приложение не считало инофрмацию о том что именно туда надо записывать лог. кстати говоря, нет необходимости использовать ямл, я использовал стандартным Config::General вот тут описано все о загрузке конфига perldoc Catalyst::Plugin::ConfigLoader::Manual в том числе и о том как конвертировать из ямла в дженерал формат. приложению или плагину какталиста все равно в каком формате храниться конфиг, каталист считывает информацию из файла и предоставляет его частям приложения в стандартном виде - в хеше контекста. доступ к переменным твоего или не твоего конфига(как это написано в модуле Catalyst/Plugin/Log/Handler.pm): my $config = $c->config->{'Log::Handler'} || {}; ... unless (exists $config->{filename}) {.... } таким образом все просто: бери и любую конфигурационную информацию помещай во внешний конфиг. Добавлено через 5 минут и 45 секунд добавлю: если в директории будет несколько конфигов с одинаковым PACKAGE__->config( name => 'MyApp' ); <----- ИМЕНЕМ!!! фиг знает какой из них будет использоваться! так что прежде чем что то создать посмотри нет ли уже такого и удали при необходимости. ну а то что ты писал про конфиги - все было не правильно, почаще читай документацию. |
| Автор: gcc 2.1.2011, 16:40 | ||
| NuINu, спасибо попробовал еще чтобы полночтью, выключить я сделал так: (можно конечно перенаправить и в файл, см. CGI::Carp) MyApp - заменить на свой
|
| Автор: vivu 13.2.2011, 13:41 |
| Попробуйте Log::Log4perl::Catalyst |