1

我正在使用 Perl/Mojolicious 和 JQuery 构建一个服务器客户端应用程序。服务器使用 Log::Log4perl 生成日志文件并将日志文件名发送回客户端,以便客户端可以看到进度。在客户端中,我使用常规的 HTML A 链接到日志文件:

<a href="logs/blabla.log">See log file</a>

问题是我在客户端单击“查看日志文件”,浏览器显示文件正在加载并卡住,直到服务器完成对文件的写入 - 然后我才能看到文件的内容。

我将 Log::Log4perl 配置为自动刷新并尝试使用“log4perl.appender.Syncer”,甚至将缓冲区设置为 0 或 1:log4perl.appender.Buffer 但没有任何帮助 - 我的 Log::Log4perl 配置是:

log4perl.appender.myFILE          = Log::Log4perl::Appender::File
    log4perl.appender.myFILE.filename =  $logfile_name
    log4perl.appender.myFILE.create_at_logtime = 1
    log4perl.appender.myFILE.mode = write
    log4perl.appender.myFILE.autoflush = 1
    log4perl.appender.myFILE.umask    = 0000,
    log4perl.appender.myFILE.layout   = Log::Log4perl::Layout::PatternLayout
    log4perl.appender.myFILE.layout.ConversionPattern = [%p][%d{HH:mm}: %m%n

服务器更新时如何查看日志文件的内容?非常感谢,祝您度过愉快的一周,

赛义夫。

4

1 回答 1

0

I am just guessing with this small amount of information. Please post more details to be able to help you. Without the client code I can't tell what is wrong.

Many file based Log::Log4perl appender has an option to turn on/off buffering. Turn off the buffering, it may help.

If I see correctly your example then it does not assign the appender to any loglevel or module.

You could try this out:

# log config
my $log4perl_conf = qq(     
    log4perl.rootLogger                   = INFO,MyFILE 
    log4perl.appender.myFILE          = Log::Log4perl::Appender::File
    log4perl.appender.myFILE.filename =  $logfile_name
    log4perl.appender.myFILE.create_at_logtime = 1
    log4perl.appender.myFILE.mode = append
    log4perl.appender.myFILE.autoflush = 1
    log4perl.appender.myFILE.umask    = 0222,
    log4perl.appender.myFILE.layout   = Log::Log4perl::Layout::PatternLayout
    log4perl.appender.myFILE.layout.ConversionPattern = [%p][%d{HH:mm}: %m%n
    log4perl.appender.myFILE.header_text = "#Log file created!"
);  
# Initialize logging
Log::Log4perl->init_once( \$log4perl_conf );    
$Log::Log4perl::JOIN_MSG_ARRAY_CHAR=' '; 
my $logger = get_logger(__PACKAGE__);
$logger->info("test! $$");
于 2013-12-05T11:14:18.587 回答