Joh*_*Tan 1 printing perl logging log4perl
我正在读这个,我感到困惑和困惑.
我应该同时使用ALWAYS或print_portfolio('themessage')同时打印和登录文件吗?
我想做的事:
if ($logfile) {
open (FILE, '>>', "logfile");
print "Hello" #some code from Log4perl#;
#prints on the display and into the logfile
}
Run Code Online (Sandbox Code Playgroud)
代替:
if ($logfile) { open (FILE, '>>', "logfile"); }
print "Hello";
if ($logfile) { print FILE "Hello"; }
Run Code Online (Sandbox Code Playgroud)
你没用.
ALWAYS是一个日志级别,无论选择何种日志记录级别,它都将始终打印.记录级别是一种控制记录器根据所选级别记录的信息量的方法
该print_portfolio子程序是一个例子,不真的有很多事要做记录到屏幕和文件在同一时间.
我相信Perl部分中的高级配置有一个明确的例子,说明如何设置记录器同时打印到屏幕和文件:
这是一个关于如何在Perl中配置两个具有相同布局的appender而不使用配置文件的示例:
Run Code Online (Sandbox Code Playgroud)######################## # Initialization section ######################## use Log::Log4perl; use Log::Log4perl::Layout; use Log::Log4perl::Level; # Define a category logger my $log = Log::Log4perl->get_logger("Foo::Bar"); # Define a layout my $layout = Log::Log4perl::Layout::PatternLayout->new("[%r] %F %L %m%n"); # Define a file appender my $file_appender = Log::Log4perl::Appender->new( "Log::Log4perl::Appender::File", name => "filelog", filename => "/tmp/my.log"); # Define a stdout appender my $stdout_appender = Log::Log4perl::Appender->new( "Log::Log4perl::Appender::Screen", name => "screenlog", stderr => 0); # Have both appenders use the same layout (could be different) $stdout_appender->layout($layout); $file_appender->layout($layout); $log->add_appender($stdout_appender); $log->add_appender($file_appender); $log->level($INFO);