Điểm qua kataras/golog: 339 sao trên GitHub, viết chủ yếu bằng Go, thuộc nhóm Backend. A high-performant Logging Foundation for Go Applications. X3 faster than the rest leveled loggers.
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
golog is a zero-dependency simple, fast and easy-to-use level-based logger written in Go Programming Language.
🚀 Installation
The only requirement is the Go Programming Language*.
Go modules
$ go get github.com/kataras/golog@latest
Or edit your project's go.mod file and execute $ go build.
module your_project_name
go 1.25
require (
github.com/kataras/golog v0.1.14
)
$ go build
$ go get github.com/kataras/golog@latest
package main
import (
"github.com/kataras/golog"
)
func main() {
// Default Output is `os.Stdout`,
// but you can change it:
// golog.SetOutput(os.Stderr)
// Time Format defaults to: "2006/01/02 15:04"
// you can change it to something else or disable it with:
// golog.SetTimeFormat("")
// Level defaults to "info",
// but you can change it:
golog.SetLevel("debug")
golog.Println("This is a raw message, no levels, no colors.")
golog.Info("This is an info message, with colors (if the output is terminal)")
golog.Warn("This is a warning message")
golog.Error("This is an error message")
golog.Debug("This is a debug message")
golog.Fatal(`Fatal will exit no matter what,
but it will also print the log message if logger's Level is >=FatalLevel`)
// Use any other supported logger through golog, e.g. the new "log/slog":
// golog.Install(slog.Default())
}
Log Levels
Name
Method
Text
Color
"fatal"
Fatal, Fatalf
[FTAL]
Red background
"error"
Error, Errorf
[ERRO]
Red foreground
"warn"
Warn, Warnf, Warningf
[WARN]
Magenta foreground
"info"
Info, Infof
[INFO]
Cyan foreground
"debug"
Debug, Debugf
[DBUG]
Yellow foreground
On debug level the logger will store stacktrace information to the log instance, which is not printed but can be accessed through a Handler (see below).
// ParseLevel returns a Level based on its string name.
level := golog.ParseLevel("debug")
// level == golog.DebugLevel
Customization
You can customize the log level attributes.
func init() {
// Levels contains a map of the log levels and their attributes.
errorAttrs := golog.Levels[golog.ErrorLevel]
// Change a log level's text.
customColorCode := 156
errorAttrs.SetText("custom text", customColorCode)
// Get (rich) text per log level.
enableColors := true
errorRichText := errorAttrs.Text(enableColors)
}
Alternatively, to change a specific text on a known log level, you can just call:
golog.ErrorText("custom text", 156)
Integration
The golog.Logger is using common, expected log methods, therefore you can integrate it with ease.
Take for example the badger database. You want to add a prefix of [badger] in your logs when badger wants to print something.
Create a child logger with a prefix text using the Child function,
disable new lines (because they are managed by badger itself) and you are ready to GO:
// Simulate a logrus logger preparation.
logrus.SetLevel(logrus.InfoLevel)
logrus.SetFormatter(&logrus.JSONFormatter{})
golog.Install(logrus.StandardLogger())
golog.Debug(`this debug message will not be shown,
because the logrus level is InfoLevel`)
golog.Error(`this error message will be visible as JSON,
because of logrus.JSONFormatter`)
Output Format
Any value that completes the Formatter interface can be used to write to the (leveled) output writer. By default the "json" formatter is available.
JSON
import "github.com/kataras/golog"
func main() {
golog.SetLevel("debug")
golog.SetFormat("json", " ") // < --
// main.go#29
golog.Debugf("This is a %s with data (debug prints the stacktrace too)", "message", golog.Fields{
"username": "kataras",
})
}
Output
{
"timestamp": 1591423477,
"level": "debug",
"message": "This is a message with data (debug prints the stacktrace too)",
"fields": {
"username": "kataras"
},
"stacktrace": [
{
"function": "main.main",
"source": "C:/example/main.go:29"
}
]
}
// Formatter is responsible to print a log to the logger's writer.
type Formatter interface {
// The name of the formatter.
String() string
// Set any options and return a clone,
// generic. See `Logger.SetFormat`.
Options(opts ...any) Formatter
// Writes the "log" to "dest" logger.
Format(dest io.Writer, log *Log) bool
}
Custom Format using Handler
The Logger can accept functions to handle (and print) each Log through its Handle method. The Handle method accepts a Handler.
type Handler func(value *Log) (handled bool)
This method can be used to alter Log's fields based on custom logic or to change the output destination and its output format.
import "github.com/kataras/golog"
func main() {
golog.SetLevel("debug")
golog.Handle(jsonOutput)
// main.go#29
golog.Debugf("This is a %s with data (debug prints the stacktrace too)", "message", golog.Fields{
"username": "kataras",
})
}
Examples
basic
output per level
child
add new level
change text and color
customize output
multi output
scan
logurs integration
log.Logger std integration
postgres integration NEW
new instance
🔥 Benchmarks
test
times ran (large is better)
ns/op (small is better)
B/op (small is better)
allocs/op (small is better)
BenchmarkGologPrint
10000000
3749 ns/op
890 B/op
28 allocs/op
BenchmarkLogrusPrint
3000000
9609 ns/op
1611 B/op
64 allocs/op
Click here for details.
👥 Contributing
If you find that something is not working as expected please open an issue.
kataras/golog có 339 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/kataras/golog. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
Commit gần nhất trên kataras/golog là 3 tháng trước (theo timestamp GitHub). Repo có 45 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
kataras/golog là gì?
kataras/golog (kataras/golog) là dự án Go trên GitHub. Theo mô tả gốc: A high-performant Logging Foundation for Go Applications. X3 faster than the rest leveled loggers.
kataras/golog so với các dự án Backend khác thế nào?
kataras/golog được TopGit xếp vào nhóm Backend, với 339 sao GitHub và viết bằng Go. Xem trang chủ đề Backend trên TopGit để so sánh với các dự án tương tự theo số sao và mức độ hoạt động.
kataras/golog viết bằng ngôn ngữ gì?
kataras/golog chủ yếu viết bằng Go. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Vì sao kataras/golog được xếp vào nhóm Backend?
TopGit xếp kataras/golog vào nhóm Backend dựa trên GitHub topics và mô tả của repo (gắn thẻ: "easy-to-use", "go", "golang"). Việc phân loại dựa trên metadata thật của repo, không phải đoán theo cảm tính biên tập.
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về golog?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về golog.