ホームページ >バックエンド開発 >Golang >golang はログの出力をオフにします

golang はログの出力をオフにします

WBOY
WBOYオリジナル
2023-05-13 09:20:371070ブラウズ

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 つの方法で実現できます。

  1. ログ レベルを PanicLevel に設定します

ログ レベルを PanicLevel に設定します。これにより、logrus は以下のログのみを記録します。パニックレベル。コードは次のとおりです。

import "github.com/sirupsen/logrus"

func main() {
    logrus.SetLevel(logrus.PanicLevel)
    logrus.Warn("This won't get printed")
}

上記のコードでは、logrus の SetLevel 関数を使用してログ レベルを PanicLevel に設定し、logrus の印刷をオフにする機能を実現しています。

  1. 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。