2017-08-07 107 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

相關問題