从Docker中的bash中logging:logging器错误:socket / dev / log:没有这样的文件或目录
我正在configurationlogging器到我的脚本
#! /bin/bash alias log="logger -s -t conf_nginx" exec >> /var/log/myscript/file.log exec 2>&1 log "this a log message"
当我正在执行这个脚本时,我只在日志文件中看到这一行
$ cat /var/log/myscript/file.log logger: socket /dev/log: No such file or directory
请帮忙
$cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 9 (stretch)" NAME="Debian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=debian HOME_URL="debian.org/" SUPPORT_URL="debian.org/support" BUG_REPORT_URL="bugs.debian.org/"
在Docker上
由于Docker容器具有自己的文件系统名称空间,所以主机的/dev/log
套接字将不可用 – 因为Docker世界中的最佳做法是让每个容器只运行一个服务,本地容器内不存在单独的日志守护进程。
最佳做法是只需login到容器的stdout和stderr。 因此,而不是运行logger -s -t conf_nginx "this is a log message"
,只是echo "this is a log message" >&2
。
在别名上
别名是用于交互式使用而不是脚本的工具,并且在交互模式下默认情况下是closures的。 改用一个函数:
log() { logger -s -t conf_nginx "$@"; }