Docker上的日志管理

时间:2017-04-07 12:21:34

标签: docker fluent

我想将STDOUT日志从Docker容器发送到流利。 但是,当一个容器输出访问日志和错误日志时,日志就会混合。

例如

# rails access log
2017-04-07 12:10:01 +0000 6a51e389e724: {"log":"I, [2017-04-07T12:10:01.825923 #7]  INFO -- : Started GET \"/users/new\" for 172.21.0.1 at 2017-04-07 12:10:01 +0000","container_id":"6a51e389e724c67be4e714402b69da192db4a304cbfdf638594de6cff9774c23","container_name":"/app","source":"stdout"}

# rails error log
2017-04-07 12:10:01 +0000 6a51e389e724: {"container_id":"6a51e389e724c67be4e714402b69da192db4a304cbfdf638594de6cff9774c23","container_name":"/app","source":"stdout","log":"E, [2017-04-07T12:10:01.830039 #7] ERROR -- : Invoke logger error"}

# rails access log
2017-04-07 12:10:03 +0000 6a51e389e724: {"log":"I, [2017-04-07T12:10:01.825923 #7]  INFO -- : Started POST \"/users/create\" for 172.21.0.1 at 2017-04-07 12:10:01 +0000","container_id":"6a51e389e724c67be4e714402b69da192db4a304cbfdf638594de6cff9774c23","container_name":"/app","source":"stdout"}

我可以为每种日志类型添加标签吗? 请告诉我你是否有一个好的解决方案。

谢谢你,并致以最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

当您的应用程序的访问和错误日​​志发送到容器的STDOUT时,您无法通过记录驱动程序将它们分开。作为解决方案,您可以将访问日志发送到STDOUT,将错误日志发送到容器的STDERR,然后稍后通过" source"每个json消息的字段(如果你将流利的连接到elasticsearch + kibana,可以这样做。)