4 Gói ghi nhật ký hiệu quả cho ứng dụng Go của bạn

Ghi nhật ký là kỹ thuật lưu giữ hồ sơ cho các mục đích tương lai trong chu trình phát triển phần mềm. Ghi nhật ký rất quan trọng vì nhật ký giúp gỡ lỗi, chẩn đoán, khắc phục sự cố và giám sát dự án.

Bạn có thể sử dụng ghi nhật ký ở các cấp độ khác nhau của ứng dụng để tìm lỗi, cảnh báo, gỡ lỗi và hơn thế nữa.

Đăng nhập Go

Thư viện tiêu chuẩn của Go chứa khúc gỗ gói giàu chức năng. Nó xử lý các cấp độ ghi nhật ký khác nhau và các phương pháp cơ bản liên quan đến ghi nhật ký mà bạn sẽ cần cho ứng dụng của mình. Tuy nhiên, khúc gỗ gói có thể không phải là lựa chọn tốt nhất nếu ứng dụng của bạn phức tạp và bạn muốn ưu tiên năng suất.

Các khúc gỗ gói không cung cấp chức năng cho nhật ký có cấu trúc. Các gói ghi nhật ký có cấu trúc cung cấp chức năng đơn giản hóa và cải thiện quá trình ghi nhật ký. Hệ sinh thái cờ vây là nơi có nhiều gói như vậy.

1. Zap của Uber

Zap là một gói ghi nhật ký cấp độ, có cấu trúc, nhanh chóng được xây dựng bởi nhóm mã nguồn mở của Uber để viết nhật ký trong Go. Uber đã xây dựng gói Zap để cung cấp khả năng ghi nhật ký hiệu quả hơn các gói khác trong hệ sinh thái Go, bao gồm khúc gỗ bưu kiện.


Có hai trình ghi nhật ký riêng biệt trong gói Zap. Các Tiều phu chức năng xử lý các trường hợp hiệu suất quan trọng. Các SugaredLogger cung cấp tính linh hoạt hơn với API kiểu printf của nó, nhưng nó đi kèm với một sự đánh đổi nhỏ về hiệu suất. Ngay cả gói SugaredLogger chậm hơn cũng nhanh hơn 4-10 lần so với các gói ghi nhật ký có cấu trúc khác.

Chạy dòng lệnh sau để cài đặt gói Zap:

go get -u go.uber.org/zap

Bạn sẽ cần phiên bản Go gần đây để cài đặt và sử dụng thành công chức năng của gói Zap.

logger, err := zap.NewProduction() 
if err != nil {
fmt.Println(err.Error())
}


defer logger.Sync()
sugar := logger.Sugar()


sugar.Infow("failed to fetch URL",
"url", url,
"attempt", 3,
"backoff", time.Second,
)


sugar.Infof("Failed to fetch URL: %s", URL)


Các tiều phu biến là một ví dụ của zap người khai thác gỗ, và Đường phương thức là một thể hiện trình ghi nhật ký có đường.

Các Infow phương thức ghi vào đầu ra và Thông tin là phiên bản định dạng của Infow phương pháp.

2. Gói Logrus

Logrus là một gói ghi nhật ký có cấu trúc dành cho ứng dụng Go. Logrus tương thích với trình ghi nhật ký thư viện tiêu chuẩn, với chức năng tương tự. Nếu bạn có kinh nghiệm sử dụng khúc gỗ gói, bạn sẽ tìm thấy một bộ làm việc với Logrus.

Logrus không hỗ trợ định dạng JSON theo mặc định. Nhưng bạn luôn có thể sử dụng thư viện JSON như thư viện tích hợp sẵn json gói với Logrus ‘ SetFormatter phương pháp.

Logrus hỗ trợ ghi nhật ký ở các cấp độ khác nhau và mặc dù nó không hiệu quả như hầu hết các gói ghi nhật ký, nhưng nó rất giàu tính năng và an toàn.

Bạn có thể sử dụng lệnh này để cài đặt Logrus trong thư mục làm việc của mình:

go get github.com/sirupsen/logrus

Đây là một ví dụ về ghi nhật ký với gói Logrus.

import (
"os"
log "github.com/sirupsen/logrus"
)
func main {
log.SetFormatter(&log.JSONFormatter{})
log.SetOutput(os.Stdout)
log.SetLevel(log.WarnLevel)


log.WithFields(log.Fields{
"Name": "John Doe",
"Age": 40,
}).Info("John's Bio Data")
}


Mã này nhập thư viện Logrus và tạo bí danh cho nó có tên nhật ký. bên trong chính hàm, nó gọi là SetFormatter phương pháp để thiết lập một định dạng cho các bản ghi. Bạn có thể dùng SetOutput phương pháp để chỉ định nơi thông báo nhật ký sẽ đi; trong trường hợp này, đầu ra tiêu chuẩn.


Các SetLevel phương pháp ghi lại các cảnh báo ở mức được chỉ định hoặc cao hơn.

3. Gói ZeroLog

ZeroLog là một thư viện JSON dành riêng cho việc ghi nhật ký, nhanh chóng, lấy cảm hứng từ Zap, được thiết kế cho hiệu suất. Nó sử dụng một API chuỗi duy nhất cho phép Zerolog viết JSON và ghi nhật ký các sự kiện mà không cần phân bổ và phản ánh.

Zerolog nhằm mục đích cung cấp một API dễ sử dụng hơn và hiệu suất cao hơn trong khi vẫn giữ cho cơ sở mã và API đơn giản. Nó tập trung vào ghi nhật ký có cấu trúc và bạn có thể sử dụng ConsoleWriter phương pháp để đăng nhập tốt trên bảng điều khiển của bạn.

Có phân bổ thấp, ghi nhật ký theo cấp, lấy mẫu, móc, trường theo ngữ cảnh và ghi lỗi với các tính năng theo dõi ngăn xếp tùy chọn trên gói Zerolog. Bạn cũng có thể tích hợp Zerolog với định nghĩa bài vănhttp các gói.

Chạy lệnh này trong đầu cuối của không gian làm việc của bạn để cài đặt Zerolog bưu kiện.

go get -u [github.com/rs/zerolog/log](http:

Đây là một ví dụ đơn giản về việc sử dụng gói Zerolog cho một hoạt động đơn giản.

import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
func main() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix


log.Print("hello world")
}


Các TimeFieldFormat tùy chọn được đặt thành định dạng thời gian Unix và In lệnh ghi đối số văn bản vào đầu ra chuẩn.

4. Gói Log15

Gói Log15 là một bộ công cụ đơn giản dành riêng cho việc ghi nhật ký có thể đọc được của con người và máy móc với các phương pháp hay nhất trong Go. Log15 mô hình hóa iohttp các gói từ thư viện tiêu chuẩn Go như một giải pháp thay thế cho các gói tích hợp sẵn khúc gỗ bưu kiện.


Các tính năng của gói Log15 bao gồm:

  • một API đơn giản, dễ hiểu
  • ghi nhật ký có cấu trúc với các cặp khóa-giá trị
  • nhật ký con với ngữ cảnh riêng tư
  • giao diện xử lý để xây dựng cấu hình ghi nhật ký tùy chỉnh qua một API nhỏ
  • hỗ trợ thiết bị đầu cuối màu
  • hỗ trợ tích hợp để ghi vào tệp, luồng, nhật ký hệ thống và nhật ký mạng
  • đệm các bản ghi để xuất.

Bạn có thể cài đặt Nhật ký15 vào gói Go của bạn bằng lệnh này.

go get github.com/inconshreveable/log15

Thật dễ dàng để bắt đầu với gói Log15. Đây là một ví dụ về việc khởi tạo trình ghi nhật ký và ghi lại thông tin và mức độ lỗi với gói.

import (
log "github.com/inconshreveable/log15"
)
func main() {
serverLog := log.New("repository", "new repository")
serverLog.Info("repository layer health check successful")
serverLog.Error("repository layer health check failed")
}


Các serverLog biến là một thể hiện của trình ghi Log15; các Mới phương thức trả về một trình ghi nhật ký với các đối số ngữ cảnh mà bạn cung cấp.

Các Thông tin phương thức trả về một thông báo thông tin và Lỗi phương thức trả về một thông báo lỗi.

Viết nhật ký hữu ích và dễ hiểu

Ghi nhật ký có thể quan trọng như bất kỳ phần nào khác của quá trình phát triển. Nó có vẻ rất dễ dàng trong giai đoạn đầu, nhưng việc tuân thủ các thực hành thiết yếu có thể làm phức tạp quá trình. Để xử lý mọi trường hợp và khía cạnh của việc ghi nhật ký, bạn nên sử dụng gói ghi nhật ký để làm mọi thứ dễ dàng hơn.

Sử dụng cấp độ ghi nhật ký, cấu trúc và ngữ cảnh để làm cho nhật ký của bạn dễ hiểu và phù hợp với mục đích dự định của chúng.

Previous Post
Next Post

post written by: