ログ収集の高度な構成
複数行の自動検出は、以下の日付/時刻形式から始まり、それに準拠するログを検出します: RFC3339、ANSIC、Unix Date Format、Ruby Date Format、RFC822、RFC822Z、RFC850、RFC1123、RFC1123Z、RFC3339Nano、Java ロギング SimpleFormatter デフォルト日付書式。
具体的な正規表現はこれ
設定例
1
2
3
4
5
| logs_config:
auto_multi_line_detection: true
auto_multi_line_extra_patterns:
- \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
- '[A-Za-z_]+ \d+, \d+ \d+:\d+:\d+ (AM|PM)'
|
1
2
3
4
5
6
7
| containers:
agent:
env:
- name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_DETECTION
value: "true"
- name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS
value: '^23-03.*'
|
Goのlog packageの書式
2023/08/31 01:48:35
になる。これはDatadogのauto multineではサポートされていない書式。
Patternを追加する
1
2
| - name: DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS
value: '\d+/\d+/\d+ \d+:\d+:\d+'
|
https://stackoverflow.com/questions/26152993/go-logger-to-print-timestamp
1
2
3
4
| func Log(l *log.Logger, msg string) {
l.SetPrefix(time.Now().Format("2006-01-02 15:04:05"))
l.Print(msg)
}
|