golang では、ログ出力を使用するのが非常に一般的な方法です。ただし、パフォーマンスと効率が必要な一部のシナリオでは、ログの印刷をオフにすると、プログラムの実行速度が向上し、無関係なログの干渉が軽減されます。この記事では、ログの出力をオフにしてプログラムのパフォーマンスを向上させる方法を紹介します。
一般に、golang でのログの使用は 2 つの方法に分けられます:
1 つ目は、標準ライブラリのログ パッケージを使用してログを出力する方法です:
import "log" func main() { log.Println("Hello, World!") }
2 つ目logrus などのサードパーティ ライブラリを使用することです。ここでは logrus を例として取り上げます:
import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.WarnLevel) logrus.SetFormatter(&logrus.JSONFormatter{}) logrus.Warn("Something not good happened") }
上記のコードでは、logrus の SetLevel 関数と SetFormatter 関数を使用して、ログ レベルと出力される形式を設定します。 by ログラスです。
しかし、高いパフォーマンスと効率性が求められる一部のシステムでは、ログの出力がパフォーマンスのボトルネックになることがあります。このような場合は、ログ出力機能をオフにする必要があります。
標準ライブラリのログを閉じる
標準ライブラリのログ出力機能をオフにしたい場合は、log.SetOutput(ioutil) を呼び出して出力パイプを Discard に設定できます。 .Discard) 関数。ログの印刷をオフにします。
import ( "io/ioutil" "log" ) func main() { log.SetOutput(ioutil.Discard) log.Println("This won't get printed") }
上記のコードでは、ioutil.Discard 関数を使用して印刷パイプを Discard に設定し、ログの印刷をオフにする機能を実現しています。この時点で、log.Println 関数は何も出力しなくなります。
logrus を閉じる
サードパーティ ライブラリ logrus の場合、高いパフォーマンスと効率性が求められるシステムでは、ログの印刷もオフにする必要があります。これは、次の 2 つの方法で実現できます。
ログ レベルを PanicLevel に設定します。これにより、logrus は以下のログのみを記録します。パニックレベル。コードは次のとおりです。
import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.PanicLevel) logrus.Warn("This won't get printed") }
上記のコードでは、logrus の SetLevel 関数を使用してログ レベルを PanicLevel に設定し、logrus の印刷をオフにする機能を実現しています。
Logrus はフックを提供しており、アプリケーションの起動時にそれらは logrus に登録されます。特定のイベントが発生すると、logrus は登録されたフックにメッセージを送信します。ただし、高いパフォーマンスと効率性が求められる一部のシステムでは、これらのフックはより多くのシステム リソースを消費します。このような場合、次のコードを使用してフックをオフにできます。
import ( "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks" ) func main() { logrus.AddHook(&hooks.NullHook{}) logrus.Warn("This won't get printed") }
上記のコードでは、AddHook 関数を呼び出し、logrus フックに NullHook を追加して、logrus の印刷をオフにする機能を実現します。
要約すると、パフォーマンスと効率に対する高い要件がある一部のシステムでは、必要に応じて上記のソリューションを使用してログ出力機能をオフにすると、システムのパフォーマンスが向上し、システムの干渉が軽減されます。
以上がgolang はログの出力をオフにしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。