68 lines
1.8 KiB
Markdown
68 lines
1.8 KiB
Markdown
# log
|
|
|
|
Log is a simple logging framework for golang.
|
|
|
|
## Getting Started
|
|
|
|
```golang
|
|
import "git.martin-riedl.de/golang/log"
|
|
|
|
func main(){
|
|
log.Default.Info("My First Info Message")
|
|
}
|
|
```
|
|
|
|
Check out this [simple example file](cmd/simple/main.go) for the basic usage.
|
|
|
|
## Multiple Log Instance
|
|
|
|
Create a new log instance (instead of using the `Default`).
|
|
|
|
```golang
|
|
import "git.martin-riedl.de/golang/log"
|
|
|
|
var myLog := log.NewLoggerDefault()
|
|
myLog.Info("My First Info Message")
|
|
```
|
|
|
|
## Outputs / Formatter / Printer
|
|
|
|
- `Formatter` defines the output format (e.g. Key/Value or JSON)
|
|
- `Printer` defines the message output location (e.g. stdout or file)
|
|
- `Output` is a combination of `Formatter` and `Printer`
|
|
|
|
The following sample creates 2 outputs. The first sends a key/value format to stdout. The second writes messages as JSON format to stdout.
|
|
|
|
```golang
|
|
import "git.martin-riedl.de/golang/log"
|
|
|
|
var output1 := NewOutput(log.LevelInfo, NewFormatterKeyValue(), NewPrinterStdout()
|
|
var output2 := NewOutput(log.LevelError, NewFormatterJSON(), NewPrinterStdout())
|
|
|
|
var myLog := log.NewLogger(
|
|
[]*Output{output1, output2}
|
|
)
|
|
myLog.Info("My First Info Message")
|
|
```
|
|
|
|
## Custom Formatter / Printer
|
|
|
|
If you need a special `Formatter` or `Printer`: simply implement the Interface (same name) and assign it to an `Output`.
|
|
|
|
# License
|
|
|
|
```
|
|
Copyright 2023 Martin Riedl
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
```
|