golang mematikan cetakan balak

WBOY
Lepaskan: 2023-05-13 09:20:37
asal
1014 orang telah melayarinya

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!")
}
Salin selepas log masuk

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")
}
Salin selepas log masuk

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")
}
Salin selepas log masuk

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:

  1. Tetapkan tahap log kepada PanicLevel

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")
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi SetLevel logrus untuk menetapkan tahap log kepada PanicLevel, merealisasikan fungsi mematikan pencetakan logrus.

  1. Tutup cangkuk 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")
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!