golang-log-library-zap


# Zapとは

Goのログライブラリ カーシェアのUberが作ったっぽい

ホットパスでログを記録するアプリケーションでは、reflectionベースのシリアライズと文字列フォーマットはめちゃんこに高く付く。別の言い方をすれば、大量の interface{}s をログに記録するために encoding/json や fmt.Fprintf を使用すると、アプリケーションは遅くなります。

# 使用法

SugaredLoggerとLoggerの2種類がある

# SugaredLogger

パフォーマンスは良いが、重要ではないコンテキストでは、SugaredLogger を使用してください。SugaredLogger は他の構造化されたロギングパッケージよりも 4-10 倍高速で、構造化と printf スタイルの両方の API を含んでいます。 Zap は異なるアプローチをとっています。これには、reflection-freeのzero-allocateのJSONエンコーダーが含まれており、ベースのロガーは可能な限りシリアライズのオーバーヘッドとアロケートを回避するように努めています。

# Logger

パフォーマンスと型の安全性が重要な場合は、Logger を使用します。これは SugaredLogger よりもさらに高速で、割り当て量ははるかに少ないですが、構造化されたロギングのみをサポートしています。

# おまけ

このloggerがストイックな設計になっているからすこし甘えたよっていみでsugerって名前なのかな