2017-08-07 104 views
0

我们正在收集我们的应用程序的日志。由于我们对应用程序进行了容器化,因此收集日志的方式需要稍微改变。有没有办法自定义Docker的日志?

我们通过多克尔日志驱动程序日志:

  • 应用程序输出的日志,容器的输出和错误
  • 使用JSON文件上 主机
  • 登录司机,搬运工日志输出到JSON文件
  • 主机上的服务转发日志文件。

但是来自Docker的日志有额外的信息,这些信息是不必要的,并使向前步骤变得复杂,因为我们需要在转发之前删除这些附加信息。

例如,来自Docker的日志如下,但我们想要的只是日志字段的值。有没有一种方法可以自定义日志格式,并只输出覆盖Docker配置所需的信息?

{ 
    “log”: "{“level”: “info”,“message”: “data is correct”,“timestamp”: “2017-08-01T11:35:30.375Z”}\r\n", 
    “stream”: “stdout”, 
    “time”: “2017-08-03T07: 58: 02.387253289Z” 
} 

回答

1

我不知道任何方式来定制json-file泊坞窗日志插件的输出。不过,码头支持gelf插件,它允许您发送日志到logstash。使用logstash可以以多种不同的方式输出日志(使用output plugins)并同时定制格式。

例如输出日志文件(没有任何其他元数据),可以使用类似以下内容:

output { 
file { 
    path => "/path/to/logfile" 
    codec => line { format => "%{message}"} 
} 
} 

如果你不想复杂性添加到您的日志记录的逻辑,你可以保持使用json-file驱动程序并使用实用程序(如jq)解析文件并仅提取相关信息。例如用jq你可以这样做:jq -r .log </path/to/logfile>

这将读取指定文件的每一行作为json对象并仅输出log字段。

+0

感谢您的回答! 实际上在第3步中,我们计划使用Splunk Forwarder将所有日志转发到Splunk服务器,并且Splunk Forwarder支持Sed命令来提取日志。 – Michelle

相关问题