https://github.com/no-src/log
A simple logging framework out of the box
https://github.com/no-src/log
go log logger logging-framework
Last synced: 9 months ago
JSON representation
A simple logging framework out of the box
- Host: GitHub
- URL: https://github.com/no-src/log
- Owner: no-src
- License: apache-2.0
- Created: 2021-09-13T15:11:03.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-17T02:52:05.000Z (over 1 year ago)
- Last Synced: 2024-07-31T20:52:11.898Z (over 1 year ago)
- Topics: go, log, logger, logging-framework
- Language: Go
- Homepage:
- Size: 104 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-go-cn - log - src/log) [![godoc][D]](https://godoc.org/github.com/no-src/log) (日志记录 / 检索及分析资料库)
- awesome-go-plus - log - A simple logging framework out of the box.  (Logging / Search and Analytic Databases)
- awesome-go - log - A simple logging framework out of the box. (Logging / Search and Analytic Databases)
- awesome-go - log - A simple logging framework out of the box. (Logging / Search and Analytic Databases)
- awesome-go - log - A simple logging framework out of the box. (Logging / Search and Analytic Databases)
- awesome-go-with-stars - log - A simple logging framework out of the box. (Logging / Search and Analytic Databases)
- awesome-go-cn - log - src/log) (日志记录 / 检索及分析资料库)
- awesome-go - log - A simple logging framework out of the box. (Logging / Search and Analytic Databases)
- fucking-awesome-go - log - A simple logging framework out of the box. (Logging / Search and Analytic Databases)
README
# log
[](https://github.com/no-src/log/actions)
[](https://github.com/no-src/log/blob/main/LICENSE)
[](https://pkg.go.dev/github.com/no-src/log)
[](https://goreportcard.com/report/github.com/no-src/log)
[](https://codecov.io/gh/no-src/log)
[](https://github.com/no-src/log/releases)
[](https://github.com/avelino/awesome-go)
## Installation
```bash
go get -u github.com/no-src/log
```
## Quick Start
Current support following loggers
- [Empty Logger](#empty-logger)
- [Console Logger](#console-logger)
- [File Logger](#file-logger)
- [Multi Logger](#multi-logger)
- [Sample Logger](#sample-logger)
For example, init a console logger, to write logs.
```go
package main
import (
"errors"
"github.com/no-src/log"
"github.com/no-src/log/level"
)
func main() {
// init console logger as default logger
// replace the line of code with any logger you need
log.InitDefaultLogger(log.NewConsoleLogger(level.DebugLevel))
defer log.Close()
text := "hello world"
// use default logger to write logs
log.Debug("%s, test debug log", text)
log.Info("%s, test info log", text)
log.Warn("%s, test warn log", text)
log.Error(errors.New("log err"), "%s, test error log", text)
log.ErrorIf(errors.New("log err"), "%s, test error log", text)
log.Log("%s, test log log", text)
}
```
## Logger
### Empty Logger
Init empty logger as default logger.
```go
log.InitDefaultLogger(log.NewEmptyLogger())
```
### Console Logger
Init console logger as default logger.
```go
log.InitDefaultLogger(log.NewConsoleLogger(level.DebugLevel))
```
### File Logger
Init file logger as default logger.
```go
if logger, err := log.NewFileLogger(level.DebugLevel, "./logs", "default_"); err == nil {
log.InitDefaultLogger(logger)
} else {
log.Error(err, "init file logger error")
}
```
### Multi Logger
Init multi logger as default logger.
```go
if logger, err := log.NewFileLogger(level.DebugLevel, "./logs", "multi_"); err == nil {
log.InitDefaultLogger(log.NewMultiLogger(log.NewConsoleLogger(level.DebugLevel), logger))
} else {
log.Error(err, "init file logger error")
}
```
### Sample Logger
Init console logger as default logger and set the sample rate, default is `1`.
```go
log.InitDefaultLoggerWithSample(log.NewConsoleLogger(level.DebugLevel), 0.6)
```
Use default logger to write logs by random sampling.
```go
text := "hello world"
log.DebugSample("[sample] %s, test debug log", text)
log.InfoSample("[sample] %s, test info log", text)
log.WarnSample("[sample] %s, test warn log", text)
log.ErrorSample(errors.New("log err"), "[sample] %s, test error log", text)
log.ErrorIfSample(errors.New("log err from ErrorIfSample"), "[sample] %s, test error log", text)
```