溫馨提示×

如何自定義Golang日志格式

小樊
65
2025-04-12 10:03:55
欄目: 編程語言

在Golang中,可以使用標準庫"log"或第三方庫(如"logrus"或"zap")來自定義日志格式。下面是使用標準庫"log"自定義日志格式的方法:

  1. 導入"log"包:
import (
	"log"
	"os"
)
  1. 創建一個自定義的日志記錄器:
type customLogger struct {
	logger *log.Logger
}

func (cl *customLogger) log(prefix string, flag int, msg string) {
	// 自定義日志格式
	formattedMsg := fmt.Sprintf(prefix+msg+"\n", cl.logger.Flags())
	// 輸出日志
	fmt.Print(formattedMsg)
}
  1. 創建一個自定義的日志輸出函數:
func customOutput(prefix string, flag int, msg string) {
	cl.log(prefix, flag, msg)
}
  1. 創建一個自定義的日志記錄器實例:
func newCustomLogger(prefix string, flag int) *customLogger {
	return &customLogger{
		logger: log.New(os.Stdout, prefix, flag),
	}
}
  1. 使用自定義的日志記錄器:
func main() {
	cl := newCustomLogger("INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
	cl.log("This is a custom log message", 0, "Hello, World!")
}

這將輸出如下格式的日志:

INFO: 2022/01/01 12:00:00 main.go:25: Hello, World!

如果你想要使用第三方庫來自定義日志格式,可以參考以下示例:

  1. 安裝"logrus"庫:
go get github.com/sirupsen/logrus
  1. 導入"logrus"包:
import (
	"github.com/sirupsen/logrus"
)
  1. 創建一個自定義的日志記錄器:
func main() {
	logrus.SetFormatter(&logrus.TextFormatter{
		FullTimestamp: true,
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			filename := filepath.Base(f.File)
			return filename, ""
		},
	})
	logrus.Info("This is a custom log message")
}

這將輸出如下格式的日志:

time="2022-01-01T12:00:00Z" level=info msg="This is a custom log message" file="main.go" line=25

你可以根據自己的需求調整日志格式。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女