https://github.com/pchchv/golog
Simple logging library for golang
https://github.com/pchchv/golog
golang golang-library golang-package logger logging
Last synced: 12 months ago
JSON representation
Simple logging library for golang
- Host: GitHub
- URL: https://github.com/pchchv/golog
- Owner: pchchv
- License: apache-2.0
- Created: 2022-08-17T06:54:35.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-24T19:46:02.000Z (over 3 years ago)
- Last Synced: 2025-06-05T09:42:00.093Z (about 1 year ago)
- Topics: golang, golang-library, golang-package, logger, logging
- Language: Go
- Homepage:
- Size: 39.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://pkg.go.dev/github.com/pchchv/golog)
# **golog**
### *Simple logging library for golang*
# **Using**
## *Import*
```go
import "github.com/pchchv/golog"
```
Call `golog.{Plain|Info|Debug|Error|Fatal}` with a message.
```go
golog.Info("Hello world!")
golog.Debug("Coordinate: %d, %d", x, y)
```
The default printing format is something like this:
```bash
2023-01-11 11:59:23.411 [INFO] main.go:21 | Hello world!
2023-01-11 11:59:23.412 [DEBUG] main.go:22 | Coordinate: 42, 13
```
Only the `golog.Plain` function does not produce leading information (date, log-level, etc.) and just acts like `fmt.Printf` does.
## *Error handling*
Recommended to use [pkg/errors](https://github.com/pkg/errors) package to create and wrap your errors. It enables you to see stack traces.
To exit on an error, there's the `golog.FatalCheck` function:
```go
err := someFunctionCall()
golog.FatalCheck(err)
```
When `err` is *not* `nil`, then the error including stack trace will be printed and your application exists with exit code 1.
## *Log level*
Specify the log level by changing `golog.LogLevel`. Possible value are `golog.LOG_PLAIN`, `golog.LOG_DEBUG`, `golog.LOG_INFO`, `golog.LOG_ERROR` and `golog.LOG_FATAL`.
Depending on the log level, some functions will be quite and do not produce outputs anymore:
| log level | Methods which will produce an output |
|:--:|:--|
| `LOG_PLAIN` | `golog.Plain()`\*
`golog.Debug()`
`golog.Info()`
`golog.Error()`
`golog.Fatal()`
`golog.CheckFatal()`
`golog.Stack()` |
| `LOG_DEBUG` | `golog.Debug()`
`golog.Info()`
`golog.Error()`
`golog.Fatal()`
`golog.CheckFatal()`
`golog.Stack()` |
| `LOG_INFO` | `golog.Info()`
`golog.Error()`
`golog.Fatal()`
`golog.CheckFatal()`
`golog.Stack()` |
| `LOG_ERROR` | `golog.Error()`
`golog.Fatal()`
`golog.CheckFatal()`
`golog.Stack()` |
| `LOG_FATAL` | `golog.Fatal()`\*\*
`golog.CheckFatal()`\*\* |
\* Prints to stdout but without any tags in front
\*\* This will print the error and call `os.Exit(1)`
## *Function suffixes / Variants*
Some functions have a suffix with slightly different behavior.
#### For non-fatal functions:
* Suffix `b`: Acts like the normal function, but in order to print the correct caller you can go **b**ack in the stack.
#### For fatal-functions:
* Suffix `f`: Acts like the normal function, but after printing the stack, the given format string will be evaluated and printed as well.
## *Change general output format*
The format can be changed by implementing the printing function specified in the `golog.FormatFunctions` array.
Exmaple: To specify your own debug-format:
```go
func main() {
// Whenever golog.Debug is called, our simpleDebug method is used to produce the output.
golog.FormatFunctions[golog.LOG_DEBUG] = simpleDebug
golog.Debug("Hello world!")
}
func simpleDebug(writer *os.File, time, level string, maxLength int, caller, message string) {
// Don't forget the \n at the end ;)
fmt.Fprintf(writer, "Debug: %s\n", message)
}
```
This example will print:
```bash
Debug: Hello world!
```
## *Change time format*
To change only the time format, change the value of the `golog.DateFormat` variable. The format of this variable if the
format described in the [time package](https://golang.org/pkg/time/).
Example:
```go
func main() {
golog.DateFormat = "02.01.2006 at 15:04:05"
golog.Debug("Hello world!")
}
```
This will produce:
```bash
11.01.2023 at 11:34:22 [DEBUG] main.go:37 | Hello world!
```