私のPerlスクリプトでLog-Log4perlモジュールを使用しようとしています。すべてが機能しますが、ログは記録されません。 Log-Log4perlを使用しようとしましたが、ファイルが空です(長さ0)
sub create_log
{
BEGIN
{
eval
{
require Log::Log4perl;
};
if([email protected])
{
print "Log::Log4perl module not installed - stubbing.\n";
no strict qw(refs);
*{"main::$_"} = sub {} for qw(DEBUG INFO WARN ERROR FATAL);
}
else
{
print "Log::Log4perl module installed.\n";
require Log::Log4perl::Level;
Log::Log4perl::Level->import(__PACKAGE__);
my $conf = q(
log4perl.category.My.Script = INFO, FileApp, Screen
log4perl.appender.FileApp = Log::Log4perl::Appender::File
log4perl.appender.FileApp.mode = append
log4perl.appender.FileApp.syswrite = 1
log4perl.appender.FileApp.filename = my.log
log4perl.appender.FileApp.layout = PatternLayout
log4perl.appender.FileApp.layout.ConversionPattern = [%p][%d]{%F line %L} %m%n %d> %m%n
log4perl.appender.Screen = Log::Log4perl::Appender::Screen
log4perl.appender.Screen.stderr = 0
log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
);
Log::Log4perl->init(\$conf);
}
}
}
create_log();
$logger = Log::Log4perl->get_logger("My;:Script");
%month_nums = ("Jan" => 1, "Feb" => 2, "Mar" => 3, "Apr" => 4, May => 5, "Jun" => 6, "Jul" => 7, "Aug" => 8, "Sep" => 9, "Oct" => 10, "Nov" => 11, "Dec" => 12);
$tries = 1;
$company_fetched = 0;
$logger->logdie("\n") if !getopts("w:f:", \%options);
$logger->logdie("Incompatible options.") if $options{'w'} && $options{'f'};
は、スクリプトを実行しているし、私はこのような画面にエラーが表示さ-f供給の両方-wと::
Incompatible options. at /usr/lib/perl5/vendor_perl/5.12.2/Log/Log4perl/Logger.pm line 887
任意の提案をここに は私のコードですか?
使用する必要があります。 – dolmen
OK、サブを使う方が簡単ですので、私は "BEGIN"を取り除きます。どうも。 – Igor