2014-10-06 65 views
1

我想在Perl的帮助下构建应用程序。该应用程序由perl的Thread::PoolLog4Perl包组成。Perl错误与Log :: Log4perl :: Appender ::文件

当我排除包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 2014-10-06 07:28:52

+1

是的,我没有线程::池安装它的工作正常。 – 2014-10-06 07:33:46

回答

4

从一些搜索周围,似乎有与主题::池的使用use load编译的问题:

Thread::Pool bug tracker

当创建下的perl 5.8.8对象,增加'使用线程::池'导致问题,当项目 正在祝福。具体来说,在许多情况下,通常返回值的代码是 ,然后祝福显示为空。从Thread :: *中删除'use load'编译指示可以解决问题。

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 - 没有得到解决,但答案包括:

不要使用线程池::。它是越野车。切换到Thread::Queue。 (OP的回应:Thread :: Queue存在问题)

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

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

+0

好的谢谢你的帮助 – 2014-10-06 09:33:36