轮换 tux web 服务器日志文件的推荐方法

轮换 tux web 服务器日志文件的推荐方法

我正在考虑将 Tux 作为我正在构建的新 CPAN 镜像的 Web 服务器。我已经运行了它,它非常快,但有一个大问题:我应该如何轮换日志文件?

日志文件是可配置的,我使用的是默认值/var/log/tux。

一个选项是复制并截断;例如:

cp /var/log/tux /var/log/tux.1
cat /dev/null > /var/log/tux

logrotate 应用程序可以为我做到这一点,但由于日志文件是二进制的,我担心这可能会在某些时候导致损坏。

如果它只破坏一个条目,我可以忍受 - 我担心整个日志文件可能会丢失。

有经验的人可以提出建议吗?

谢谢

答案1

您可以尝试类似这样的方法,这是我编写的,用于滚动我的 nginx 日志。我查找了有关tux用户空间进程的一些详细信息,但找不到任何方法让它重新打开日志,因此您可能不得不停止并启动该进程。

#!/bin/bash

YEAR=`date "+%Y"`
MONTH=`date "+%m"`
DAY=`date "+%d"`

HOSTNAME=`hostname -s`

LOG_FILES="access.log error.log images.log redirect.log ssl.log click.log uploads.log urchin.log user_sites.log"

DATE=$YEAR/$MONTH/$DAY

LOG_ROOT=/var/log/
NGINX_LOG_ROOT=$NGINX_LOG_ROOT/nginx

# make path

mkdir -p $NGINX_LOG_ROOT/$DATE

# touch and symlink in new log files

for FILE in $LOG_FILES; do
    LOG_FILE=$NGINX_LOG_ROOT/$DATE/$HOSTNAME.$FILE
    touch $LOG_FILE
    ln -fs $LOG_FILE $NGINX_LOG_ROOT/$FILE
done

# tell nginx to re-open its log files

kill -USR1 `cat /var/run/nginx.pid`

答案2

在我提出建议之前“TUX 从未成为官方 Linux 内核的一部分”。您确定要自己维护内核补丁吗?

我个人会尝试创建一个 tux 写入的管道,然后使用旋转日志(来自 apache)来处理这些事情。甚至可能是记录器,以便它直接使用 syslog。

rotatelogs 可以为你处理基于时间或大小的轮换,如果你不将日志发送到中央日志服务器,我会使用它,如果你要发送到中央日志服务器,我会将其发送到 syslog,只需让 syslog 创建另一个套接字,tux 将写入该套接字(最好是 /var/log/tux),然后 syslog应该为您处理其余的事情……

答案3

我有点好奇:既然你需要在内核中运行 HTTP 引擎,你对每秒传入请求的期望是多少?tinyhttpd 还不够快吗?

相关内容