1

我正在尝试在 Perl 的帮助下构建应用程序。该应用程序由perlThread::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;

它给出了上述错误

发生这种情况的确切原因是什么?如何避免这个错误?

4

1 回答 1

4

通过一些搜索,似乎 Thread::Pool 对use loadpragma 的使用存在问题:

来自Thread::Pool 错误跟踪器

在 perl 5.8.8 下创建对象时,添加 'use Thread::Pool' 会导致物品被祝福时出现问题。具体来说,在许多情况下,通常返回值然后被祝福的代码显示为 null。从 Thread::* 中删除 'use load' pragma 可以解决此问题。

Thread::Pool on cpanratings :

这个模块确实很方便,但我认为它存在一些严重的问题。[ ... ] 其次,这个模块正在使用“使用负载”,这会导致 Log::Log4perl 出现故障。那肯定是一只邪恶的海森虫。只是因为我在这个源文件(http://w2c.martin.majlis.cz/w2c/doc-gen/crawler_8pl_source.html - 链接断开)中发现了一条捷克语评论,所以我没有花几天的时间进行调试。

PerlMonks 上的 Log4Perl 的 Thread::Pool 问题- 未解决,但答案包括:

不要使用 Thread::Pool。这是越野车。切换到Thread::Queue。(OP 的回应:Thread::Queue 仍然存在问题)

您也可以尝试Thread::Pool::Simple。与 Thread::Pool 相比,我的运气更好。

所以共识要么尝试use load从 Thread::Pool 中删除,要么使用不同的模块。

于 2014-10-06T08:50:32.087 回答