我今天下午一直在试图阻止docker-registry写入stdout而不是日志,但是我认为基础Python正在创build一些进程,这些进程似乎绕过了所有的日志logging工作。
我已经尝试了通常的>和2>&1并用不同的命令滚动,但是这一切似乎都逃脱了我的把握。
无论如何,我可以得到这个命令的所有输出直接到日志而不是stdout?
[编辑]
这是我用来启动它的脚本,它是我打算用作服务的shell脚本的一部分
start() { # Sugar echo -e "Starting registry" # Run the registry export LOGLEVEL=NOTSET export AWS_BUCKET=$TargetBucket export AWS_KEY=$AWSAccessKey export AWS_SECRET=$AWSSecretKey docker-registry & 2>&1 | tee $LogFile # Create a lock file touch $LockFile }
如果其他人仍然在寻找答案,我最近才意识到自己。
当您安装docker-registry rpm并启动服务时,日志文件将存储在systemd日志文件本身中。
这里是检索日志的命令:sudo journalctl -fu docker-registry.service
同样的方式来获得docker日志也。
您还可以编辑/usr/lib/systemd/system/docker-registry.service,并将所需的文件replace为–access-logfile。 服务重启是必需的。
通过使用EPEL中提供的预编译包: docker-io-1.0.0-6.el6.x86_64.rpm和docker -registry-0.7.1-2.el6.noarch.rpm ,使您的工作更轻松。
你将有和已经工作的服务脚本(不需要推出自己的),你会收到更新(比重新编译或从pip重新安装更容易)和操作系统集成。
由于日志是在/etc/docker-registry.yaml文件中configuration的(使用DOCKER_REGISTRY_CONFIG=/etc/docker-registry.yml /etc/sysconfig/docker-registry从/etc/sysconfig/docker-registry DOCKER_REGISTRY_CONFIG=/etc/docker-registry.yml /etc/sysconfig/docker-registry引用),您的日志问题就消失了。
您可以使用*_logfile:来定义您的日志所指向的位置,即在common部分中使用loglevel:指令,还是在每个提供者中使用。
如果你喜欢坚持手动安装,请注意,通常gunicorn docker-registry是由gunicorn ,使用以下命令(这是从Fedora 20安装中取得的,不应该太不同):
/usr/bin/gunicorn --access-logfile - --debug --max-requests 100 --graceful-timeout 3600 \ -t 3600 -k gevent -b ${REGISTRY_ADDRESS}:${REGISTRY_PORT} -w $GUNICORN_WORKERS \ docker_registry.wsgi:application
( --access-logfile是stdin是一个systemd东西)