在记录器运行时查看Log :: Log4perl日志文件的内容

时间:2013-12-05 09:46:13

标签: jquery perl mojolicious log4perl

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

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

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

我将Log :: Log4perl简化为autoflush,并尝试使用'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

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

赛福

1 个答案:

答案 0 :(得分:0)

我只是猜测这些少量的信息。请发布更多详细信息以便为您提供帮助。没有客户端代码我就不知道出了什么问题。

许多基于文件的Log :: Log4perl appender都有一个打开/关闭缓冲的选项。关闭缓冲,这可能会有所帮助。

如果我正确看到你的例子,那么它不会将appender分配给任何loglevel或模块​​。

你可以尝试一下:

# 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! $$");