perlpal has asked for the wisdom of the Perl Monks concerning the following question:

Hello PerlMonks,

I am implementing perl logging using Log4perl. As part of the input to a config file, the user provides the log level (Debug,Info,Warn,Error,Fatal). Depending on this, the log level is set on the log handler($DEBUG,$INFO,$WARN,$ERROR,$FATAL).

Mentioned below is a prototype of the code. I get the following error when i assign "$loglev" to the log handler "$logger->level($loglev)" - "invalid level '$INFO' at line 19".

Is '$INFO' equivalent to $INFO?
#!/usr/software/bin/perl -w use Log::Log4perl qw(get_logger :levels); my $lev = "INFO"; my $loglev; if ($lev =~ /.*DEBUG.*/i){ $loglev = '$DEBUG'; }elsif($lev =~ /.*INFO.*/i){ $loglev = '$INFO'; }elsif($lev =~ /.*WARN.*/i){ $loglev = '$WARN'; }elsif($lev =~ /.*ERROR.*/i){ $loglev = '$ERROR'; }elsif($lev =~ /.*FATAL.*/i){ $loglev = '$FATAL'; }else{ die "\nPlease provide the correct log level\n"; } my $logger = get_logger(); $logger->level($loglev); # $DEBUG,$INFO,$WARN,$ERROR,$FATAL my $appender = Log::Log4perl::Appender->new( "Log::Dispatch::File", filename => "test.log", mode => "append", ); $logger->add_appender($appender); my $layout = Log::Log4perl::Layout::PatternLayout->new( "%d %p> %F{1}:%L %M - %m%n"); $appender->layout($layout); my $cnt = 100; if ($cnt == 100){ hit(); }else{ miss(); } sub hit { $logger->info("\nhit a century"); } sub miss{ $logger->error("\nDid not hit a century"); }