因为我们测试环境的日志比较大而且多,目前提供下载,但是测试环境的流量不大,所以想把当前日志开放在web去浏览,老的备份日志就提供下载:
Nginx的内容,主要的就是if那一段:
server{
listen 80;
server_name log.domain.com;
root /data/nginx/testlog/;
location /{
autoindex on;
index index.html index.htm;
}
# 备份的日志名都是以年-月-日的格式,所以排除2015就OK了
if ( $request_uri !~* '.*(2015).*' ) {
rewrite ^/(.*)\.log /log.php?path=$1.log last;
}
location ~ \.php$ {
root /data/nginx/testlog/;
fastcgi_pass unix:/tmp/php.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
PHP的代码如下:
<?php
$logpath = isset($_GET['path']) ? $_GET['path'] : '';
if (!$logpath) {
echo '文件参数不能为空';
}
function tail($filename, $n = 50)
{
$file = fopen($filename, 'r');
fseek($file, $n * 1024 * -1, SEEK_END);
while ($line = fgets($file)) {
$lines[] = trim($line);
}
return array_slice($lines, -$n);
}
$output = tail($logpath); //log.txt 读取的文件
foreach($output as $key=>$val) {
echo $val . PHP_EOL;
echo '<br />';
}
exit;