mirror of
https://github.com/go-micro/go-micro.git
synced 2024-12-18 08:26:38 +02:00
184 lines
3.6 KiB
Go
184 lines
3.6 KiB
Go
// Package log provides debug logging
|
|
package log
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
// DefaultLog logger
|
|
DefaultLog = NewLog()
|
|
// DefaultLevel is default log level
|
|
DefaultLevel = LevelInfo
|
|
// prefix for all messages
|
|
prefix string
|
|
)
|
|
|
|
// Log is event log
|
|
type Log interface {
|
|
// Read reads log entries from the logger
|
|
Read(...ReadOption) ([]Record, error)
|
|
// Write writes records to log
|
|
Write(Record) error
|
|
// Stream log records
|
|
Stream() (Stream, error)
|
|
}
|
|
|
|
// Record is log record entry
|
|
type Record struct {
|
|
// Timestamp of logged event
|
|
Timestamp time.Time `json:"time"`
|
|
// Value contains log entry
|
|
Value interface{} `json:"value"`
|
|
// Metadata to enrich log record
|
|
Metadata map[string]string `json:"metadata"`
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
// Level is a log level
|
|
type Level int
|
|
|
|
const (
|
|
LevelFatal Level = iota
|
|
LevelError
|
|
LevelInfo
|
|
LevelWarn
|
|
LevelDebug
|
|
LevelTrace
|
|
)
|
|
|
|
func init() {
|
|
switch os.Getenv("MICRO_LOG_LEVEL") {
|
|
case "trace":
|
|
DefaultLevel = LevelTrace
|
|
case "debug":
|
|
DefaultLevel = LevelDebug
|
|
case "warn":
|
|
DefaultLevel = LevelWarn
|
|
case "info":
|
|
DefaultLevel = LevelInfo
|
|
case "error":
|
|
DefaultLevel = LevelError
|
|
case "fatal":
|
|
DefaultLevel = LevelFatal
|
|
}
|
|
}
|
|
|
|
func log(v ...interface{}) {
|
|
if len(prefix) > 0 {
|
|
DefaultLog.Write(Record{Value: fmt.Sprint(append([]interface{}{prefix, " "}, v...)...)})
|
|
return
|
|
}
|
|
DefaultLog.Write(Record{Value: fmt.Sprint(v...)})
|
|
}
|
|
|
|
func logf(format string, v ...interface{}) {
|
|
if len(prefix) > 0 {
|
|
format = prefix + " " + format
|
|
}
|
|
DefaultLog.Write(Record{Value: fmt.Sprintf(format, v...)})
|
|
}
|
|
|
|
// WithLevel logs with the level specified
|
|
func WithLevel(l Level, v ...interface{}) {
|
|
if l > DefaultLevel {
|
|
return
|
|
}
|
|
log(v...)
|
|
}
|
|
|
|
// WithLevel logs with the level specified
|
|
func WithLevelf(l Level, format string, v ...interface{}) {
|
|
if l > DefaultLevel {
|
|
return
|
|
}
|
|
logf(format, v...)
|
|
}
|
|
|
|
// Trace provides trace level logging
|
|
func Trace(v ...interface{}) {
|
|
WithLevel(LevelTrace, v...)
|
|
}
|
|
|
|
// Tracef provides trace level logging
|
|
func Tracef(format string, v ...interface{}) {
|
|
WithLevelf(LevelTrace, format, v...)
|
|
}
|
|
|
|
// Debug provides debug level logging
|
|
func Debug(v ...interface{}) {
|
|
WithLevel(LevelDebug, v...)
|
|
}
|
|
|
|
// Debugf provides debug level logging
|
|
func Debugf(format string, v ...interface{}) {
|
|
WithLevelf(LevelDebug, format, v...)
|
|
}
|
|
|
|
// Warn provides warn level logging
|
|
func Warn(v ...interface{}) {
|
|
WithLevel(LevelWarn, v...)
|
|
}
|
|
|
|
// Warnf provides warn level logging
|
|
func Warnf(format string, v ...interface{}) {
|
|
WithLevelf(LevelWarn, format, v...)
|
|
}
|
|
|
|
// Info provides info level logging
|
|
func Info(v ...interface{}) {
|
|
WithLevel(LevelInfo, v...)
|
|
}
|
|
|
|
// Infof provides info level logging
|
|
func Infof(format string, v ...interface{}) {
|
|
WithLevelf(LevelInfo, format, v...)
|
|
}
|
|
|
|
// Error provides warn level logging
|
|
func Error(v ...interface{}) {
|
|
WithLevel(LevelError, v...)
|
|
}
|
|
|
|
// Errorf provides warn level logging
|
|
func Errorf(format string, v ...interface{}) {
|
|
WithLevelf(LevelError, format, v...)
|
|
}
|
|
|
|
// Fatal logs with Log and then exits with os.Exit(1)
|
|
func Fatal(v ...interface{}) {
|
|
WithLevel(LevelFatal, v...)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// Fatalf logs with Logf and then exits with os.Exit(1)
|
|
func Fatalf(format string, v ...interface{}) {
|
|
WithLevelf(LevelFatal, format, v...)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// SetLevel sets the log level
|
|
func SetLevel(l Level) {
|
|
DefaultLevel = l
|
|
}
|
|
|
|
// GetLevel returns the current level
|
|
func GetLevel() Level {
|
|
return DefaultLevel
|
|
}
|
|
|
|
// Set a prefix for the logger
|
|
func SetPrefix(p string) {
|
|
prefix = p
|
|
}
|
|
|
|
// Set service name
|
|
func SetName(name string) {
|
|
prefix = fmt.Sprintf("[%s]", name)
|
|
=======
|
|
type Stream interface {
|
|
Chan() <-chan Record
|
|
Stop() error
|
|
>>>>>>> 50d5c6402b1e2bea64476a969b613b7c685d6f8e
|
|
}
|