framework1/framework/contract/log.go

64 lines
2.5 KiB
Go

package contract
import (
"context"
"io"
"time"
)
const LogKey = "hade:log"
type LogLevel uint32
const (
// UnknownLevel 表示未知的日志级别
UnknownLevel LogLevel = iota
// PanicLevel level, panic 表示会导致整个程序出现崩溃的日志信息
PanicLevel
// FatalLevel level. fatal 表示会导致当前这个请求出现提前终止的错误信息
FatalLevel
// ErrorLevel level. error 表示出现错误,但是不一定影响后续请求逻辑的错误信息
ErrorLevel
// WarnLevel level. warn 表示出现错误,但是一定不影响后续请求逻辑的报警信息
WarnLevel
// InfoLevel level. info 表示正常的日志信息输出
InfoLevel
// DebugLevel level. debug 表示在调试状态下打印出来的日志信息
DebugLevel
// TraceLevel level. trace 表示最详细的信息,一般信息量比较大,可能包含调用堆栈等信息
TraceLevel
)
// CtxFielder 定义了从context中获取信息的方法
type CtxFielder func(ctx context.Context) map[string]interface{}
// Formatter 定义了将日志信息组织成字符串的通用方法
type Formatter func(level LogLevel, t time.Time, msg string, fields map[string]interface{}) ([]byte, error)
// Log 定义了日志服务协议
type Log interface {
// Panic 表示会导致整个程序出现崩溃的日志信息
Panic(ctx context.Context, msg string, fields map[string]interface{})
// Fatal 表示会导致当前这个请求出现提前终止的错误信息
Fatal(ctx context.Context, msg string, fields map[string]interface{})
// Error 表示出现错误,但是不一定影响后续请求逻辑的错误信息
Error(ctx context.Context, msg string, fields map[string]interface{})
// Warn 表示出现错误,但是一定不影响后续请求逻辑的报警信息
Warn(ctx context.Context, msg string, fields map[string]interface{})
// Info 表示正常的日志信息输出
Info(ctx context.Context, msg string, fields map[string]interface{})
// Debug 表示在调试状态下打印出来的日志信息
Debug(ctx context.Context, msg string, fields map[string]interface{})
// Trace 表示最详细的信息,一般信息量比较大,可能包含调用堆栈等信息
Trace(ctx context.Context, msg string, fields map[string]interface{})
// SetLevel 设置日志级别
SetLevel(level LogLevel)
// SetCtxFielder 从context中获取上下文字段field
SetCtxFielder(handler CtxFielder)
// SetFormatter 设置输出格式
SetFormatter(formatter Formatter)
// SetOutput 设置输出管道
SetOutput(out io.Writer)
}