我正在使用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
如何在服务器更新时查看日志文件的内容? 非常感谢,祝你有愉快的一周,
赛福
答案 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! $$");