从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 "$@"; }