Documentation
¶
Overview ¶
Package log contains the logger interface and its implementation used in the project.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var FallbackLogger = Init(CmdOpts{})
FallbackLogger is an alias for the standard logger
Functions ¶
func WithLogger ¶
WithLogger returns a new context with the provided logger. Use in combination with logger.WithField(s) for great effect
func WithSuppressedPgxErrors ¶
WithSuppressedPgxErrors returns a context in which pgx tracer log entries at error level are downgraded to debug. Use it around operations where query or batch failures are an expected, handled part of the control flow.
Types ¶
type BrokerHook ¶
type BrokerHook struct {
// contains filtered or unexported fields
}
BrokerHook is the implementation of the logrus hook for publishing logs to subscribers
func NewBrokerHook ¶
func NewBrokerHook(ctx context.Context, level string) *BrokerHook
NewBrokerHook creates a LogHook to be added to an instance of logger
func (*BrokerHook) AddSubscriber ¶
func (hook *BrokerHook) AddSubscriber(msgCh MessageChanType)
AddSubscriber adds receiving channel to the subscription
func (*BrokerHook) Fire ¶
func (hook *BrokerHook) Fire(entry *logrus.Entry) error
Fire adds logrus log message to the internal queue for processing
func (*BrokerHook) Levels ¶
func (hook *BrokerHook) Levels() []logrus.Level
Levels returns the available logging levels
func (*BrokerHook) RemoveSubscriber ¶
func (hook *BrokerHook) RemoveSubscriber(msgCh MessageChanType)
RemoveSubscriber deletes receiving channel from the subscription
func (*BrokerHook) SetBrokerFormatter ¶
func (hook *BrokerHook) SetBrokerFormatter(formatter logrus.Formatter)
SetBrokerFormatter sets the format that will be used by hook.
type CmdOpts ¶
type CmdOpts struct {
LogLevel string `` /* 164-byte string literal not displayed */
LogFile string `long:"log-file" mapstructure:"log-file" description:"File name to store logs"`
LogFileFormat string `` /* 130-byte string literal not displayed */
LogFileRotate bool `long:"log-file-rotate" mapstructure:"log-file-rotate" description:"Rotate log files"`
LogFileSize int `` /* 135-byte string literal not displayed */
LogFileAge int `` /* 129-byte string literal not displayed */
LogFileNumber int `` /* 138-byte string literal not displayed */
}
CmdOpts specifies the logging command-line options
type Formatter ¶
type Formatter struct {
// FieldsOrder - default: fields sorted alphabetically
FieldsOrder []string
// TimestampFormat - default: time.StampMilli = "Jan _2 15:04:05.000"
TimestampFormat string
// HideKeys - show [fieldValue] instead of [fieldKey:fieldValue]
HideKeys bool
// NoColors - disable colors
NoColors bool
// NoFieldsColors - apply colors only to the level, default is level + fields
NoFieldsColors bool
// NoFieldsSpace - no space between fields
NoFieldsSpace bool
// ShowFullLevel - show a full level [WARNING] instead of [WARN]
ShowFullLevel bool
// NoUppercaseLevel - no upper case for level value
NoUppercaseLevel bool
// TrimMessages - trim whitespaces on messages
TrimMessages bool
// CallerFirst - print caller info first
CallerFirst bool
// CustomCallerFormatter - set custom formatter for caller info
CustomCallerFormatter func(*runtime.Frame) string
}
Formatter - logrus formatter, implements logrus.Formatter Forked from "github.com/antonfisher/nested-logrus-formatter"
func (*Formatter) Format ¶
Format an log entry
Example (Default) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
})
l.Debug("test1")
l.Info("test2")
l.Warn("test3")
l.Error("test4")
}
Output: - [DEBU] test1 - [INFO] test2 - [WARN] test3 - [ERRO] test4
Example (Field_order) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
FieldsOrder: []string{"component", "category"},
HideKeys: false,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
lll.Info("test3")
}
Output: - [INFO] test1 - [INFO] [component:main] test2 - [INFO] [component:main] [category:rest] test3
Example (Full_level) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
ShowFullLevel: true,
})
l.Debug("test1")
l.Info("test2")
l.Warn("test3")
l.Error(" test4")
}
Output: - [DEBUG] test1 - [INFO] test2 - [WARNING] test3 - [ERROR] test4
Example (Hide_keys) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
HideKeys: true,
})
ll := l.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
}
Output: - [INFO] test1 - [INFO] [rest] test2
Example (No_fields_space) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
FieldsOrder: []string{"component", "category"},
HideKeys: false,
NoFieldsSpace: true,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
lll.Info("test3")
}
Output: - [INFO] test1 - [INFO][component:main] test2 - [INFO][component:main][category:rest] test3
Example (No_uppercase_level) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
FieldsOrder: []string{"component", "category"},
NoUppercaseLevel: true,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
llll := ll.WithField("category", "other")
l.Debug("test1")
ll.Info("test2")
lll.Warn("test3")
llll.Error("test4")
}
Output: - [debu] test1 - [info] [component:main] test2 - [warn] [component:main] [category:rest] test3 - [erro] [component:main] [category:other] test4
Example (Show_keys) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
HideKeys: false,
})
ll := l.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
}
Output: - [INFO] test1 - [INFO] [category:rest] test2
Example (Sort_order) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
NoColors: true,
TimestampFormat: "-",
HideKeys: false,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
lll.Info("test3")
}
Output: - [INFO] test1 - [INFO] [component:main] test2 - [INFO] [category:rest] [component:main] test3
Example (Trim_message) ¶
package main
import (
"os"
formatter "github.com/cybertec-postgresql/pgwatch/v6/internal/log"
"github.com/sirupsen/logrus"
)
func main() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&formatter.Formatter{
TrimMessages: true,
NoColors: true,
TimestampFormat: "-",
})
l.Debug(" test1 ")
l.Info("test2 ")
l.Warn(" test3")
l.Error(" test4 ")
}
Output: - [DEBU] test1 - [INFO] test2 - [WARN] test3 - [ERRO] test4
type Logger ¶
type Logger logrus.FieldLogger
Logger is the interface used by all components
func GetLogger ¶
GetLogger retrieves the current logger from the context. If no logger is available, the default logger is returned
func NewNoopLogger ¶
func NewNoopLogger() Logger
type LoggerHooker ¶
type LoggerHooker interface {
Logger
AddHook(hook logrus.Hook)
AddSubscriber(msgCh MessageChanType)
RemoveSubscriber(msgCh MessageChanType)
}
LoggerHooker adds AddHook method to LoggerIface for database logging hook
func Init ¶
func Init(opts CmdOpts) LoggerHooker
Init creates logging facilities for the application
type MessageChanType ¶
type MessageChanType chan MessageType
MessageChanType represents the format of the message channel
type PgxLogger ¶
type PgxLogger struct {
// contains filtered or unexported fields
}
PgxLogger is the struct used to log using pgx postgres driver
func NewPgxLogger ¶
NewPgxLogger returns a new instance of PgxLogger