Ошибка Perl с Log::Log4perl::Appender::File
Я пытаюсь создать приложение с помощью Perl. Приложение состоит из Thread::Pool
а также Log4Perl
пакеты из перл.
Когда я исключаю пакет 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 ответ
Из некоторых поисков видно, что есть проблемы с использованием Thread:: Pool use load
прагма:
Из системы отслеживания ошибок Thread:: Pool:
При создании объекта под Perl 5.8.8 добавление 'use Thread::Pool' вызывает проблемы при благословении предметов. В частности, во многих случаях код, который обычно возвращает значения и который затем благословляется, отображается как ноль. Удаление прагмы 'use load' из Thread:: * устраняет проблему.
Этот модуль действительно удобен, но, на мой взгляд, у него есть серьезные проблемы. [...] Во-вторых, этот модуль использует 'use load', что приводит к неисправности Log::Log4perl. Это, безусловно, один злой гейзенбаг. Только потому, что я нашел чешский комментарий в этом исходном файле ( http://w2c.martin.majlis.cz/w2c/doc-gen/crawler_8pl_source.html - ссылка не работает), мне не потребовались дни отладки.
Thread:: Pool проблемы с Log4Perl на PerlMonks - не решены, но ответы включают в себя:
Не используйте Thread:: Pool. Это глючит. Переключиться на Thread:: Queue. (Ответ OP: проблемы с Thread:: Queue сохраняются)
Вы также можете попробовать http://metacpan.org/pod/Thread::Pool::Simple. Мне повезло больше, чем Thread:: Pool.
Так что консенсус либо попробуйте удалить use load
из Thread:: Pool или используйте другой модуль.