https://github.com/mandala/go-log
Colorful and simple logging library for Golang
https://github.com/mandala/go-log
color golang golang-library logging terminal
Last synced: 5 months ago
JSON representation
Colorful and simple logging library for Golang
- Host: GitHub
- URL: https://github.com/mandala/go-log
- Owner: Mandala
- Created: 2017-02-20T14:47:13.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-12-27T20:08:02.000Z (over 3 years ago)
- Last Synced: 2025-12-16T02:47:07.475Z (6 months ago)
- Topics: color, golang, golang-library, logging, terminal
- Language: Go
- Size: 10.7 KB
- Stars: 40
- Watchers: 3
- Forks: 12
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Golang Logging Library
=======================
The colorful and simple logging library for Golang.
## What is this
Opinionated logging library that able to output to `io.Reader` with file descriptors (`os.Stdout`, `os.Stderr`,
regular file, etc.) with automatic terminal color support.
The log serverity and behavior can be described as follows:
| Severity | Description | Caller Info |
|:--------:|:------------|:-----------:|
| Fatal | Unrecoverable error and automatically exit after logging | Yes |
| Error | Recoverable error but need attention | Yes |
| Warn | Minor error and does not output the caller info | No |
| Info | Informational message | No |
| Debug | Debug message, only shown when debug enabled | Yes |
| Trace | Trace message, only shown when debug enabled | No |
## Getting started
Add the `go-log` package using
```
go get github.com/withmandala/go-log
```
And import it to your package by
```go
import (
"github.com/withmandala/go-log"
)
```
Use the `go-log` package with
```go
logger := log.New(os.Stderr)
logger.Info("Hi, this is your logger")
```
Write to a `log` file
```go
f, err := os.Create("app.log")
if err != nil {
fmt.Println(err)
return
}
logger := log.New(f)
```
## Color support
The library will try to automatically detect the `io.Reader` file descriptor when calling `log.New()` for color
support. But, if you insist to use or not to use color, you can add `.WithColor()` or `.WithoutColor()` respectively.
```go
// With color
logger := log.New(os.Stderr).WithColor()
// Without color
logger := log.New(os.Stderr).WithoutColor()
```
## Debug output
The log library will suppress the `.Debug()` and `.Trace()` output by default. To enable or disable the debug output,
call `(Logger).WithDebug()` or `(Logger).WithoutDebug()` respectively.
```go
// Enable debugging
logger := log.New(os.Stderr).WithDebug()
// Print debug output
logger.Debug("Test debug output")
// Disable debug output
logger.WithoutDebug()
logger.Debug("Test debug output") // This message will not be printed
```
## Be Quiet
If somehow the log is annoying to you, just shush it by calling `(Logger).Quiet()` and **ALL** log output will be
disappear, although `.Fatal()` will silently quit the program with error. To re-enable the log output use
`(Logger).NoQuiet()`.