123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- // Copyright 2020-2021 InfluxData, Inc. All rights reserved.
- // Use of this source code is governed by MIT
- // license that can be found in the LICENSE file.
- // Package log defines Logging API.
- // The global Log variable contains the actual logger. Set it to own implementation to override logging. Set it to nil to disable logging
- package log
- import (
- "fmt"
- "log"
- "sync"
- )
- // Log is the library wide logger. Setting to nil disables logging.
- var Log Logger = &logger{logLevel: ErrorLevel, prefix: "influxdb2client"}
- // Log levels
- const (
- ErrorLevel uint = iota
- WarningLevel
- InfoLevel
- DebugLevel
- )
- // Logger defines interface for logging
- type Logger interface {
- // Writes formatted debug message if debug logLevel is enabled.
- Debugf(format string, v ...interface{})
- // Writes debug message if debug is enabled.
- Debug(msg string)
- // Writes formatted info message if info logLevel is enabled.
- Infof(format string, v ...interface{})
- // Writes info message if info logLevel is enabled
- Info(msg string)
- // Writes formatted warning message if warning logLevel is enabled.
- Warnf(format string, v ...interface{})
- // Writes warning message if warning logLevel is enabled.
- Warn(msg string)
- // Writes formatted error message
- Errorf(format string, v ...interface{})
- // Writes error message
- Error(msg string)
- // SetLogLevel sets allowed logging level.
- SetLogLevel(logLevel uint)
- // LogLevel retrieves current logging level
- LogLevel() uint
- // SetPrefix sets logging prefix.
- SetPrefix(prefix string)
- }
- // logger provides default implementation for Logger. It logs using Go log API
- // mutex is needed in cases when multiple clients run concurrently
- type logger struct {
- prefix string
- logLevel uint
- lock sync.Mutex
- }
- func (l *logger) SetLogLevel(logLevel uint) {
- l.lock.Lock()
- defer l.lock.Unlock()
- l.logLevel = logLevel
- }
- func (l *logger) LogLevel() uint {
- l.lock.Lock()
- defer l.lock.Unlock()
- return l.logLevel
- }
- func (l *logger) SetPrefix(prefix string) {
- l.lock.Lock()
- defer l.lock.Unlock()
- l.prefix = prefix
- }
- func (l *logger) Debugf(format string, v ...interface{}) {
- l.lock.Lock()
- defer l.lock.Unlock()
- if l.logLevel >= DebugLevel {
- log.Print(l.prefix, " D! ", fmt.Sprintf(format, v...))
- }
- }
- func (l *logger) Debug(msg string) {
- l.lock.Lock()
- defer l.lock.Unlock()
- if l.logLevel >= DebugLevel {
- log.Print(l.prefix, " D! ", msg)
- }
- }
- func (l *logger) Infof(format string, v ...interface{}) {
- l.lock.Lock()
- defer l.lock.Unlock()
- if l.logLevel >= InfoLevel {
- log.Print(l.prefix, " I! ", fmt.Sprintf(format, v...))
- }
- }
- func (l *logger) Info(msg string) {
- l.lock.Lock()
- defer l.lock.Unlock()
- if l.logLevel >= DebugLevel {
- log.Print(l.prefix, " I! ", msg)
- }
- }
- func (l *logger) Warnf(format string, v ...interface{}) {
- l.lock.Lock()
- defer l.lock.Unlock()
- if l.logLevel >= WarningLevel {
- log.Print(l.prefix, " W! ", fmt.Sprintf(format, v...))
- }
- }
- func (l *logger) Warn(msg string) {
- l.lock.Lock()
- defer l.lock.Unlock()
- if l.logLevel >= WarningLevel {
- log.Print(l.prefix, " W! ", msg)
- }
- }
- func (l *logger) Errorf(format string, v ...interface{}) {
- l.lock.Lock()
- defer l.lock.Unlock()
- log.Print(l.prefix, " E! ", fmt.Sprintf(format, v...))
- }
- func (l *logger) Error(msg string) {
- l.lock.Lock()
- defer l.lock.Unlock()
- log.Print(l.prefix, " E! ", msg)
- }
|