言語高性能ライブラリZAP詳細な説明とアプリケーション
この記事では、Uberによって開発された高性能GOログライブラリZAPを調査し、その特性、使用方法、ログファイル部門やレベル出力などの高度なアプリケーションをカバーしています。 Zapは、その速度と構造化されたログ出力で有名です。githubアドレス:
https://www.php.cn/link/26ac49243aa3065a10ca1796c2d1e57b
creation の例
Zapは、ロガーインスタンスを作成するための3つのメソッドを提供します:。違いは、情報の詳細を記録し、パラメータータイプが文字列に制限されていることです。 zap.NewProduction()
zap.NewDevelopment()
zap.Example()
<code class="language-go">// 代码示例 var log *zap.Logger log = zap.NewExample() log, _ := zap.NewDevelopment() log, _ := zap.NewProduction() log.Debug("这是一条DEBUG信息") log.Info("这是一条INFO信息")</code>
<code>// Example 输出 {"level":"debug","msg":"这是一条DEBUG信息"} {"level":"info","msg":"这是一条INFO信息"}</code>
<code>// Development 输出 2025-01-28T00:00:00.000+0800 DEBUG development/main.go:7 这是一条DEBUG信息 2025-01-28T00:00:00.000+0800 INFO development/main.go:8 这是一条INFO信息</code>
<code>// Production 输出 {"level":"info","ts":1737907200.0000000,"caller":"production/main.go:8","msg":"这是一条INFO信息"} {"level":"info","ts":1737907200.0000000,"caller":"production/main.go:9","msg":"这是一条包含字段的INFO信息","region":["us-west"],"id":2}</code>
Example
Production
Development
*zap.Logger
*zap.SugaredLogger
.Sugar()
同時に、コンソールとファイルへの出力SugaredLogger
<code class="language-go">var sugarLogger *zap.SugaredLogger func InitLogger() { logger, _ := zap.NewProduction() sugarLogger = logger.Sugar() } func main() { InitLogger() defer sugarLogger.Sync() sugarLogger.Errorf("获取URL %s 失败:错误 = %s", url, err) }</code>
ログファイルは、時間とともに大きくなり、大きくなります。多数のディスクスペースを占有しないようにするには、特定の条件に応じてログファイルが必要です。 ZAP自体はファイルセグメンテーション機能を提供しませんが、ZAPが推奨するLumberJackパッケージを使用してそれを実現できます。 zap.New()
<code class="language-go">// 代码示例 var log *zap.Logger log = zap.NewExample() log, _ := zap.NewDevelopment() log, _ := zap.NewProduction() log.Debug("这是一条DEBUG信息") log.Info("这是一条INFO信息")</code>
マネージャーの問い合わせを容易にするために、エラーレベルの下のログは通常、エラーレベル以降のログがERROR.logファイルに書き込まれます。 メソッドの3番目のパラメーターを変更し、ファイルを情報とエラーに分割するだけです。次の例:
zapcore.NewCore
<code>// Example 输出 {"level":"debug","msg":"这是一条DEBUG信息"} {"level":"info","msg":"这是一条INFO信息"}</code>
コンソールにはレベルの色が表示されます
EncodeLevel
<code>// Development 输出 2025-01-28T00:00:00.000+0800 DEBUG development/main.go:7 这是一条DEBUG信息 2025-01-28T00:00:00.000+0800 INFO development/main.go:8 这是一条INFO信息</code>
zap.New
zap.AddCaller()
フルコード
<code>// Production 输出 {"level":"info","ts":1737907200.0000000,"caller":"production/main.go:8","msg":"这是一条INFO信息"} {"level":"info","ts":1737907200.0000000,"caller":"production/main.go:9","msg":"这是一条包含字段的INFO信息","region":["us-west"],"id":2}</code>
<code class="language-go">var sugarLogger *zap.SugaredLogger func InitLogger() { logger, _ := zap.NewProduction() sugarLogger = logger.Sugar() } func main() { InitLogger() defer sugarLogger.Sync() sugarLogger.Errorf("获取URL %s 失败:错误 = %s", url, err) }</code>
1。マルチ言語サポート
JavaScript、Python、GoまたはRustを使用して開発します。
https://www.php.cn/link/7884effb9452a6d7a794999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 この復活した出力は、元の意味と構造の元の意味と構造を維持します
以上がZAP:GOのログの可能性を最大限に引き出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。