mirror of https://github.com/kubernetes/kops.git
86 lines
2.8 KiB
Markdown
86 lines
2.8 KiB
Markdown
# logger #
|
|
Logger is a simple cross platform Go logging library for Windows, Linux, FreeBSD, and
|
|
macOS, it can log to the Windows event log, Linux/macOS syslog, and an io.Writer.
|
|
|
|
This is not an official Google product.
|
|
|
|
## Usage ##
|
|
|
|
Set up the default logger to log the system log (event log or syslog) and a
|
|
file, include a flag to turn up verbosity:
|
|
|
|
```go
|
|
import (
|
|
"flag"
|
|
"os"
|
|
|
|
"github.com/google/logger"
|
|
)
|
|
|
|
const logPath = "/some/location/example.log"
|
|
|
|
var verbose = flag.Bool("verbose", false, "print info level logs to stdout")
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
|
|
lf, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
|
|
if err != nil {
|
|
logger.Fatalf("Failed to open log file: %v", err)
|
|
}
|
|
defer lf.Close()
|
|
|
|
defer logger.Init("LoggerExample", *verbose, true, lf).Close()
|
|
|
|
logger.Info("I'm about to do something!")
|
|
if err := doSomething(); err != nil {
|
|
logger.Errorf("Error running doSomething: %v", err)
|
|
}
|
|
}
|
|
```
|
|
|
|
The Init function returns a logger so you can setup multiple instances if you
|
|
wish, only the first call to Init will set the default logger:
|
|
|
|
```go
|
|
lf, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
|
|
if err != nil {
|
|
logger.Fatalf("Failed to open log file: %v", err)
|
|
}
|
|
defer lf.Close()
|
|
|
|
// Log to system log and a log file, Info logs don't write to stdout.
|
|
loggerOne := logger.Init("LoggerExample", false, true, lf)
|
|
defer loggerOne.Close()
|
|
// Don't to system log or a log file, Info logs write to stdout..
|
|
loggerTwo := logger.Init("LoggerExample", true, false, ioutil.Discard)
|
|
defer loggerTwo.Close()
|
|
|
|
loggerOne.Info("This will log to the log file and the system log")
|
|
loggerTwo.Info("This will only log to stdout")
|
|
logger.Info("This is the same as using loggerOne")
|
|
|
|
```
|
|
|
|
## Custom Format ##
|
|
|
|
| Code | Example |
|
|
|--------------------------------------|----------------------------------------------------------|
|
|
| `logger.SetFlags(log.Ldate)` | ERROR: 2018/11/11 Error running Foobar: message |
|
|
| `logger.SetFlags(log.Ltime)` | ERROR: 09:42:45 Error running Foobar: message |
|
|
| `logger.SetFlags(log.Lmicroseconds)` | ERROR: 09:42:50.776015 Error running Foobar: message |
|
|
| `logger.SetFlags(log.Llongfile)` | ERROR: /src/main.go:31: Error running Foobar: message |
|
|
| `logger.SetFlags(log.Lshortfile)` | ERROR: main.go:31: Error running Foobar: message |
|
|
| `logger.SetFlags(log.LUTC)` | ERROR: Error running Foobar: message |
|
|
| `logger.SetFlags(log.LstdFlags)` | ERROR: 2018/11/11 09:43:12 Error running Foobar: message |
|
|
|
|
```go
|
|
func main() {
|
|
lf, err := os.OpenFile(logPath, …, 0660)
|
|
defer logger.Init("foo", *verbose, true, lf).Close()
|
|
logger.SetFlags(log.LstdFlags)
|
|
}
|
|
```
|
|
|
|
More info: https://golang.org/pkg/log/#pkg-constants
|