aro*_*ick 10 apache docker kubernetes
我在docker容器中运行Apache2并且想要不写入磁盘,将日志写入stdout和stderr.我已经看到了几种不同的方法(Supervisord和stdout/stderr,Apache访问日志到stdout),但这些看起来像黑客.默认情况下没有办法做到这一点吗?
要清楚,我不想尾随日志,因为这会导致事物被写入容器中的磁盘.
登录到Docker Hub(https://hub.docker.com/_/httpd/)的"官方"版本仍然写入磁盘.
另外,在尝试滚动日志时,我需要做些什么来阻止Apache失败?
另一件事 - 理想情况下,我真的很想在没有其他附加功能的情况下这样做.nginx可以做到这一点.
我并不认为这根本不会破坏httpd的日志记录(例如,如果它试图在文件中搜索),但你可以设置从日志路径到/ dev/stdout和/ dev/stderr的符号链接,就像所以:
ln -sf /dev/stdout /path/to/access.log
ln -sf /dev/stderr /path/to/error.log
Run Code Online (Sandbox Code Playgroud)
可以使用Docker Hub对vanilla httpd容器的入口命令
ln -sf /dev/stdout /path/to/access.log && ln -sf /dev/stderr /path/to/error.log && /path/to/httpd
Run Code Online (Sandbox Code Playgroud)
根据apache邮件列表,您可以直接写入/ dev/stdio(在类似Unix的系统上),因为它只是一个常规的OL'文件句柄.简单!粘贴...
最有效的答案取决于您的操作系统.如果您使用的是UNIX系统,它提供/ dev/stdout和/ dev/stderr(或者可能是/ dev/fd/1和/ dev/fd/2),那么请使用这些文件名.如果这不是一个选项,请使用管道输出功能.例如,从我的配置:
CustomLog"|/usr/sbin/rotatelogs -c -f -l -L /private/var/log/apache2/test-access.log /private/var/log/apache2/test-access.log.%Y-% m-%d 86400"krader_custom ErrorLog"|/usr/sbin/rotatelogs -c -f -l -L /private/var/log/apache2/test-error.log/private/var/log/apache2/test-error .log.%Y-%m-%d 86400"
显然你会想要在上面的例子中用/ usr/sbin/rotatelogs替换另一个程序,它将数据写入你想要的位置.
| 归档时间: |
|
| 查看次数: |
12368 次 |
| 最近记录: |