次のログ構造があります。
[STDERR] 2018-07-09 11:06:16.003 INFO some_pkg/main.go:232 Logging message 1 {"pid": 8842, "process": "some_process"}
[STDERR] 2018-07-09 11:06:16.006 DEBUG some_pkg/main.go:291 Logging message 2 {"pid": 8842, "process": "other_process"}
[STDERR] 2018-07-09 11:06:16.009 INFO some_pkg/main.go:345 Logging message 3 {"pid": 8842, "process": "some_process"}
このロギング スニペットには、5 種類の情報があることがわかります。日付/時刻、ログレベル、発生、メッセージ、および JSON フィールド ([STDERR] フィールドを除く) があります。つまり、ログ構造には 5 つの列があります。キーpidとプロセス(JSON から)を含む新しい列を追加したいと思います。ZAP エンコーダーと構成でこれを行うにはどうすればよいですか? ZAP のドキュメントにはその解決策が見つかりませんでした。
次のコードを使用して、ログにフィールドを追加します。
logger = logger.With(zap.Field{Key: "pid", Type: zapcore.Int64Type, Integer: int64(os.Getpid())})
しかし、pid フィールドの値は JSON (上に表示されているもの) になり、新しい列に表示したいと思います。ZAP でこれを行う簡単な方法はありますか?
私の望ましい構造は、前の例では次のようになります。
[STDERR] 2018-07-09 11:06:16.003 INFO some_pkg/main.go:232 Logging message 1 8842 some_process
[STDERR] 2018-07-09 11:06:16.006 DEBUG some_pkg/main.go:291 Logging message 2 8836 other_process
[STDERR] 2018-07-09 11:06:16.009 INFO some_pkg/main.go:345 Logging message 3 8842 some_process