2014-10-06 2 views
1

Я пытаюсь создать приложение с помощью Perl. Приложение состоит из Thread::Pool и Log4Perl пакетов от perl.Ошибка Perl с журналом :: Log4perl :: Appender :: File

Когда я исключаю пакет Thread::Pool лесозаготовительные работы. Но когда я включить его он дает мне ошибку следующим образом:

ERROR: can't load appenderclass 'Log::Log4perl::Appender::File' 
Could not find file for 'Log::Log4perl::Appender::File' at C:/Perl/site/lib/load.pm line 214. 

Рабочий код:

# use Thread::Pool; 
use Log::Log4perl; 

my $log_conf = 'LoggingConfiguration.conf'; 
Log::Log4perl::init($log_conf); 
my $logger = Log::Log4perl->get_logger(); 
$logger->info(" Info Msg "); 

Но если я удалить комментарий, как

use Thread::Pool; 

это дает выше ошибка

Какова конкретная причина для этого? Как избежать этой ошибки?

+1

Вы установили * 'Log :: Log4perl :: Appender :: File'? – Biffen

+1

Да, я правильно установил его работу без Thread :: Pool. –

ответ

4

Из некоторых искать вокруг, кажется, что есть проблемы с Thread :: использование бассейна в use load прагме:

От Thread::Pool bug tracker:

При создании объекта под Perl 5.8.8, добавив, 'use Thread :: Pool' вызывает проблемы, когда предметы благословляются. В частности, во многих случаях код, который обычно возвращает значения, и которые являются , тогда блаженный отображается как null. Удаление прагмы «use load» из Thread :: * устраняет проблему.

Thread::Pool on cpanratings:

Этот модуль действительно удобно, но, по моему мнению, есть какие-то серьезные проблемы, связанные с ним. [...] Во-вторых, этот модуль использует «использование нагрузки», которая приводит к сбою Log :: Log4perl. Это, безусловно, один злой хайзенбуг. Только потому, что я нашел чешский комментарий в этом исходном файле (http://w2c.martin.majlis.cz/w2c/doc-gen/crawler_8pl_source.html - ссылка сломанная), что мне не потребовались дни отладки.

Thread::Pool issues with Log4Perl on PerlMonks - неразрешенные, но ответы включают:

Не используйте тему :: Pool. Это глючит. Переключить на: Thread::Queue. (Ответ OP: проблемы сохраняются с Thread :: Queue)

Вы также можете попробовать Thread::Pool::Simple. Мне повезло больше, чем Thread :: Pool.

Таким образом, консенсус либо пытается удалить use load из Thread :: Pool, либо использовать другой модуль.

+0

ОК спасибо за помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^