Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用docker容器dosn'中的php函数syslog;行不通_Php_Docker_Syslog - Fatal编程技术网

调用docker容器dosn'中的php函数syslog;行不通

调用docker容器dosn'中的php函数syslog;行不通,php,docker,syslog,Php,Docker,Syslog,我正在尝试对我的php应用程序进行dockerize。我有一个用于NGINX和PHP-FPM的容器 我的应用程序通过PHP openlog和syslog函数将一些日志数据写入syslog,如下所示: openlog("myapp.test", LOG_ODELAY | LOG_CONS, LOG_LOCAL5); syslog(LOG_INFO, "This is a test"); closelog(); 我的docker守护程序配置为使用syslog驱动程序: { "graph":

我正在尝试对我的php应用程序进行dockerize。我有一个用于NGINX和PHP-FPM的容器

我的应用程序通过PHP openlog和syslog函数将一些日志数据写入syslog,如下所示:

openlog("myapp.test", LOG_ODELAY | LOG_CONS, LOG_LOCAL5);
syslog(LOG_INFO, "This is a test");
closelog();
我的docker守护程序配置为使用syslog驱动程序:

{
    "graph": "/storage/docker-service",
    "storage-driver": "overlay",
    "log-driver": "syslog",
    "log-opts": {
        "syslog-address": "tcp://SERVER_IP:514",
        "syslog-facility": "local5"
    }
}
(服务器IP是我的服务器的IPv4地址)

我使用docker compose启动docker容器,并仅为每个容器设置带有日志选项的日志标记

NGINX配置为登录到syslog:

error_log syslog:server=SERVER_IP,facility=local5,tag=nginx debug;
access_log syslog:server=SERVER_IP,facility=local5,tag=nginx;
PHP-FPM相同:

error_log = syslog
syslog.ident = php-fpm
syslog.facility = local5
来自NGINX和PHP-FPM的日志正确显示在服务器系统日志中。但使用php函数创建的日志消息从未出现

这里有什么问题?是否认为使用docker syslog驱动程序可以捕获容器中的所有syslog消息


有什么建议可以解决这个问题吗?

你可以尝试在openlog中包含LOG_PERROR选项,这样日志也可以转到stderr,这允许docker守护进程将其重定向到syslog服务器。我最终通过将/dev/LOG从本地maschin装载到同一位置的容器中,使其工作正常-v/dev/log:/dev/log这样,来自php syslog函数的调用就会出现在本地maschin的syslog中。下周我会回到办公室,尝试一下LOG_PERROR。