我想将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"}
我可以为每种日志类型添加标签吗? 请告诉我你是否有一个好的解决方案。
谢谢你,并致以最诚挚的问候。
答案 0 :(得分:0)
当您的应用程序的访问和错误日志发送到容器的STDOUT时,您无法通过记录驱动程序将它们分开。作为解决方案,您可以将访问日志发送到STDOUT,将错误日志发送到容器的STDERR,然后稍后通过" source"每个json消息的字段(如果你将流利的连接到elasticsearch + kibana,可以这样做。)