我有以下问题:
我的Catalyst Webservice使用Log4Perl生成记录所有用户活动的日志文件。
如何仅为管理员提供此文件作为下载?根目录不是选项,因为每个人都可以下载它。我需要一种安全的方式。管理员在Web服务中有一个单独的区域来管理用户。
遗憾的是,使用ssh / sftp也没有选项,必须通过Web服务提供日志。
答案 0 :(得分:1)
要构建@memowe建议的日志文件发送操作,您需要一个执行以下操作的控制器:
$filehandle
以读取日志文件。$c->res->content_type(something)
和$c->res->header('Content-Disposition' => 'attachment')
强制将响应视为下载,以便浏览器显示“另存为...”对话框。$c->res->body($filehandle)
以返回日志文件的内容并绕过View渲染器(模板或其他)。希望这能让你顺利上路。
答案 1 :(得分:0)
sub log : Chained('base_admin') PathPart('log') Args(0) {
my ( $self, $c ) = @_;
my $logfile = $c->path_to('test.log');
$c->response->header('Content-Type' => 'text/plain');
$c->response->header('Content-Disposition' => 'attachment; filename=test.log');
$c->serve_static_file($logfile);
}