Di golang, menggunakan cetakan log adalah cara yang sangat biasa. Walau bagaimanapun, dalam beberapa senario yang memerlukan prestasi dan kecekapan, mematikan pencetakan log boleh meningkatkan kelajuan berjalan program dan mengurangkan gangguan log yang tidak berkaitan. Artikel ini akan memperkenalkan cara untuk mematikan pencetakan log dan meningkatkan prestasi program.
Secara amnya, menggunakan log dalam golang boleh dibahagikan kepada dua cara:
Pertama ialah menggunakan pakej log dalam perpustakaan standard untuk mencetak log:
import "log" func main() { log.Println("Hello, World!") }
Tidak. Yang kedua ialah menggunakan perpustakaan pihak ketiga, seperti logrus Di sini kita mengambil logrus sebagai contoh:
import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.WarnLevel) logrus.SetFormatter(&logrus.JSONFormatter{}) logrus.Warn("Something not good happened") }
Dalam kod di atas, kami menggunakan fungsi SetLevel dan SetFormatter logrus untuk menetapkan tahap log dan format dicetak oleh logrus.
Tetapi dalam sesetengah sistem dengan keperluan prestasi dan kecekapan tinggi, pencetakan log akan menjadi hambatan prestasi. Dalam kes ini, kita perlu mematikan fungsi pencetakan log.
Tutup log dalam perpustakaan standard
Apabila kita ingin mematikan fungsi pencetakan log dalam perpustakaan standard, kita boleh menetapkan paip pencetakan kepada Buang dengan memanggil log.SetOutput(ioutil .Buang) fungsi Matikan pencetakan log.
import ( "io/ioutil" "log" ) func main() { log.SetOutput(ioutil.Discard) log.Println("This won't get printed") }
Dalam kod di atas, kami menggunakan fungsi ioutil.Discard untuk menetapkan paip cetakan kepada Buang, merealisasikan fungsi mematikan pencetakan log. Pada ketika ini, fungsi log.Println tidak akan mengeluarkan apa-apa lagi.
Matikan logrus
Untuk logrus perpustakaan pihak ketiga, pencetakan log juga perlu dimatikan dalam sistem dengan keperluan prestasi dan kecekapan tinggi. Ini boleh dicapai melalui dua cara berikut:
Tetapkan tahap log kepada PanicLevel, yang akan menjadikan logrus hanya merekodkan log di bawah tahap panik. Kodnya adalah seperti berikut:
import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.PanicLevel) logrus.Warn("This won't get printed") }
Dalam kod di atas, kami menggunakan fungsi SetLevel logrus untuk menetapkan tahap log kepada PanicLevel, merealisasikan fungsi mematikan pencetakan logrus.
Logrus menyediakan cangkuk, dan ia akan didaftarkan dalam logrus apabila permohonan bermula. Apabila peristiwa tertentu berlaku, logrus akan menghantar mesej ke cangkuk berdaftar. Walau bagaimanapun, dalam sesetengah sistem dengan prestasi tinggi dan keperluan kecekapan, cangkuk ini akan menggunakan lebih banyak sumber sistem. Dalam kes ini, kami boleh mematikan cangkuk melalui kod berikut:
import ( "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks" ) func main() { logrus.AddHook(&hooks.NullHook{}) logrus.Warn("This won't get printed") }
Dalam kod di atas, kami memanggil fungsi AddHook, menambah NullHook pada cangkuk logrus dan merealisasikan fungsi mematikan pencetakan logrus.
Ringkasnya, bagi sesetengah sistem yang mempunyai keperluan yang lebih tinggi untuk prestasi dan kecekapan, menggunakan penyelesaian di atas untuk mematikan fungsi pencetakan log apabila perlu boleh meningkatkan prestasi sistem dan mengurangkan gangguan sistem.
Atas ialah kandungan terperinci golang mematikan cetakan balak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!