ruby - 从 Docker 容器登录到 macOS 中的系统日志/控制台?

标签 ruby macos docker logging macos-sierra

我将 Docker 容器集设置为将日志发送到 CentOS 7 上的主机日志(使用 --log-driver syslog)。我想在 macOS (Sierra) 上复制它。但它似乎并没有出现在任何地方。

$ docker run --log-driver syslog -it busybox sh
/ # logger "Hello world!"
/ # exit

还有:

$ sudo cat /var/log/system.log | grep "Hello world"
Password:
$

需要什么配置才能使任意容器的任何 Docker 系统日志记录命令出现在 macOS 上的日志文件中?


如果我不配置日志驱动程序,我可以查看这些类型的默认系统日志记录。但是 Ruby 的 syslog 实现必须以不同的方式记录。

$ docker run --log-driver syslog -it centos /bin/bash
# yum install ruby -y
# ruby -e "require 'syslog/logger'; log = Syslog::Logger.new 'my_program'; log.info 'this line will be logged via syslog(3)'"
# exit
$ sudo tail -n 10000 /var/log/system.log | grep "syslog(3)"
$ 

最佳答案

这取决于您记录消息的方式。
正如 Better ways of handling logging in containers 在“Daniel Walsh ”中提到的那样:

One big problem with standard docker containers is that any service that writes messages to syslog or directly to the journal get dropped by default.
Docker does not record any logs unless the messages are written to STDIN/STDERR. There is no logging service running inside of the container to catch these messages.

所以一个简单的回显应该在 syslog 中结束,如 chentex/random-logger 所示。图片。

来自 Docker for Mac / Log and Troubleshooting ,您可以直接检查 docker run 后是否看到任何日志:

To view Docker for Mac logs at the command line, type this command in a terminal window or your favorite shell.

$ syslog -k Sender Docker

2017:

查看~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log的内容。 PR 11458 中添加了 Syslog 驱动程序

2022:

Brice the comments 中提及:

In Docker Desktop for macOs 4.x the logs are now here

$HOME/Library/Containers/com.docker.docker/Data/log/, 
# eg 
$HOME/Library/Containers/com.docker.docker/Data/log/vm/console.log

关于ruby - 从 Docker 容器登录到 macOS 中的系统日志/控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47018062/

相关文章:

ruby - "Undefined method ' 关闭 '"试图关闭 Ruby 中的文件时

macos - OS X、 cocoa : how can an app be signaled when a network connection becomes available?

java - 如何使用 Aqua/system LAF 让 JPanel 使用没有选项卡的 JTabbedPane UI?

amazon-web-services - 使用 ALB 的最佳实践

ruby-on-rails - 电影院预订申请

ruby - 如果对象存在则调用对象的方法

ruby-on-rails - Ruby JSON 解析更改哈希键

mac 中的 PHP 连接问题

laravel - 在 Heroku 上使用 Apache 部署 Dockerized Laravel 应用程序

docker - 在 Nexus Docker 中挂载主机目录时出错