Documentation ¶
Overview ¶
Package logs 日志系统
格式 ¶
提供了 Writer 接口用于处理输出的日志格式,用户可以自己实现, 系统也提供了几种常用的供用户选择。
同时还提供了 Printer 接口用于处理 [Logger.Print] 等方法输入的数据。 Printer 一般用于对用户输入的数据进行二次处理,比如进行本地化翻译等。
Logger ¶
Logger 为实际的日志输出接口,提供多种 Logger 接口的实现。
- Logs.ERROR 等为普通的日志对象;
- Logs.With 返回的是带固定参数的日志对象;
Index ¶
- Constants
- func Caller(l *Logs)
- func Created(l *Logs)
- func DefaultPrint(l *Logs)
- func IsValidLevel(l Level) bool
- type Entry
- func (e *Entry) DepthError(depth int, err error)
- func (e *Entry) DepthPrint(depth int, v ...interface{})
- func (e *Entry) DepthPrintf(depth int, format string, v ...interface{})
- func (e *Entry) DepthPrintln(depth int, v ...interface{})
- func (e *Entry) DepthString(depth int, s string)
- func (e *Entry) Error(err error)
- func (e *Entry) Location(depth int) *Entrydeprecated
- func (e *Entry) Logs() *Logs
- func (e *Entry) Print(v ...interface{})
- func (e *Entry) Printf(format string, v ...interface{})
- func (e *Entry) Println(v ...interface{})
- func (e *Entry) String(s string)
- func (e *Entry) With(name string, val interface{}) Input
- type Input
- type Level
- type Logger
- type Logs
- func (logs *Logs) DEBUG() Logger
- func (logs *Logs) Debug(v ...interface{})
- func (logs *Logs) Debugf(format string, v ...interface{})
- func (logs *Logs) ERROR() Logger
- func (logs *Logs) Enable(level ...Level)
- func (logs *Logs) Error(v ...interface{})
- func (logs *Logs) Errorf(format string, v ...interface{})
- func (logs *Logs) FATAL() Logger
- func (logs *Logs) Fatal(v ...interface{})
- func (logs *Logs) Fatalf(format string, v ...interface{})
- func (logs *Logs) HasCaller() bool
- func (logs *Logs) HasCreated() bool
- func (logs *Logs) INFO() Logger
- func (logs *Logs) Info(v ...interface{})
- func (logs *Logs) Infof(format string, v ...interface{})
- func (logs *Logs) IsEnable(l Level) bool
- func (logs *Logs) Logger(lv Level) Logger
- func (logs *Logs) NewEntry(lv Level) *Entry
- func (logs *Logs) Output(e *Entry)deprecated
- func (logs *Logs) SetCaller(v bool)
- func (logs *Logs) SetCreated(v bool)
- func (logs *Logs) SetOutput(w Writer)
- func (logs *Logs) SetPrinter(p Printer)
- func (logs *Logs) StdLogger(l Level) *log.Loggerdeprecated
- func (logs *Logs) TRACE() Logger
- func (logs *Logs) Trace(v ...interface{})
- func (logs *Logs) Tracef(format string, v ...interface{})
- func (logs *Logs) WARN() Logger
- func (logs *Logs) Warn(v ...interface{})
- func (logs *Logs) Warnf(format string, v ...interface{})
- func (logs *Logs) With(lv Level, params map[string]interface{}) Logger
- type Option
- type Pair
- type Printer
- type WriteEntry
- type Writer
- func MergeWriter(w ...Writer) Writer
- func NewDispatchWriter(d map[Level]Writer) Writer
- func NewJSONWriter(timeLayout string, w ...io.Writer) Writer
- func NewNopWriter() Writer
- func NewTermWriter(timeLayout string, fore colors.Color, w io.Writer) Writer
- func NewTextWriter(timeLayout string, w ...io.Writer) Writer
Constants ¶
const ( MilliLayout = "15:04:05.000" MicroLayout = "15:04:05.000000" NanoLayout = "15:04:05.000000000" )
Variables ¶
This section is empty.
Functions ¶
func DefaultPrint ¶ added in v4.2.0
func DefaultPrint(l *Logs)
func IsValidLevel ¶ added in v4.5.1
Types ¶
type Entry ¶
type Entry struct { Level Level Created time.Time // 日志的生成时间 // 日志的实际内容 // // 如果要改变此值,请使用 Depth* 系列的方法。 Message string // 以下表示日志的定位信息 Path string Line int // 额外的数据保存在此,比如由 [Logger.With] 添加的数据。 Params []Pair // contains filtered or unexported fields }
Entry 每一条日志的表示对象
func (*Entry) DepthError ¶ added in v4.3.0
DepthError 输出 error 类型的内容到日志
depth 表示调用,1 表示调用此方法的位置;
如果 Logs.HasCaller 为 false,那么 depth 将不起实际作用。
func (*Entry) DepthPrint ¶ added in v4.3.0
DepthPrint 输出任意类型的内容到日志
depth 表示调用,1 表示调用此方法的位置;
如果 Logs.HasCaller 为 false,那么 depth 将不起实际作用。
func (*Entry) DepthPrintf ¶ added in v4.3.0
DepthPrintf 输出任意类型的内容到日志
depth 表示调用,1 表示调用此方法的位置;
如果 Logs.HasCaller 为 false,那么 depth 将不起实际作用。
func (*Entry) DepthPrintln ¶ added in v4.4.0
DepthPrintln 输出任意类型的内容到日志
depth 表示调用,1 表示调用此方法的位置;
如果 Logs.HasCaller 为 false,那么 depth 将不起实际作用。
func (*Entry) DepthString ¶ added in v4.3.0
DepthString 输出字符串类型的内容到日志
depth 表示调用,1 表示调用此方法的位置;
如果 Logs.HasCaller 为 false,那么 depth 将不起实际作用。
func (*Entry) Location
deprecated
Location 记录位置信息
会同时写入 e.Path 和 e.Line 两个值。
depth 表示调用,1 表示调用 Location 的位置;
如果 Logs.HasCaller 为 false,那么此调用将不产生任何内容。
Deprecated: 可以直接使用 Entry.DepthError 等方法代替
type Input ¶ added in v4.3.0
type Input interface { // With 为日志提供额外的参数 // // 返回值是当前对象。 With(name string, val interface{}) Input // Error 将一条错误信息作为一条日志输出 // // 这是 Print 的特化版本,在已知类型为 error 时, // 采用此方法会比 Print(err) 有更好的性能。 Error(err error) // String 将字符串作为一条日志输出 // // 这是 Print 的特化版本,在已知类型为字符串时, // 采用此方法会比 Print(s) 有更好的性能。 String(s string) // 输出一条日志信息 Print(v ...interface{}) Println(v ...interface{}) Printf(format string, v ...interface{}) }
Input 日志输入提供的接口
type Level ¶
type Level int8
const ( LevelInfo Level LevelTrace LevelDebug LevelWarn LevelError LevelFatal )
目前支持的日志类型
func ParseLevel ¶
func (Level) MarshalText ¶
func (*Level) UnmarshalText ¶
type Logger ¶
type Logger interface { Input // StdLogger 将当前对象转换成标准库的日志对象 // // NOTE: 不要设置返回对象的 Prefix 和 Flag,这些配置项与当前模块的功能有重叠。 // [log.Logger] 应该仅作为向 [Logger] 输入 [Entry.Message] 内容使用。 StdLogger() *log.Logger }
Logger 日志接口
type Logs ¶
type Logs struct {
// contains filtered or unexported fields
}
func (*Logs) Output
deprecated
Output 输出 Entry 对象
相对于其它方法,该方法比较自由,可以由 e 决定最终输出到哪儿,内容也由用户定义。
Deprecated: Entry.DepthError 等方法自带了 Output 方法
type Printer ¶ added in v4.2.0
type Printer interface { // Error 对 [Input.Error] 提供的内容进行二次处理 Error(error) string // String 对 [Input.String] 提供的内容进行二次处理 String(string) string // Printf 对 [Input.Printf] 提供的内容进行二次处理 Printf(string, ...interface{}) string // Print 对 [Input.Print] 提供的内容进行二次处理 Print(...interface{}) string // Println 对 [Input.Println] 提供的内容进行二次处理 Println(...interface{}) string }
Printer 对 Input 输入的内容进行二次处理
每个函数分别对 Input 相应的输入方法,对其提供的内容进行格式化。
type WriteEntry ¶ added in v4.5.0
type WriteEntry func(*Entry)
func (WriteEntry) WriteEntry ¶ added in v4.5.0
func (w WriteEntry) WriteEntry(e *Entry)
type Writer ¶
type Writer interface { // WriteEntry 将 [Entry] 写入日志通道 // // NOTE: 此方法应该保证以换行符结尾。 WriteEntry(*Entry) }
Writer 将 Entry 转换成文本并输出的功能
func NewDispatchWriter ¶
NewDispatchWriter 根据 Level 派发到不同的 Writer 对象
func NewJSONWriter ¶
NewJSONWriter 声明 JSON 格式的输出
func NewTermWriter ¶
NewTermWriter 带颜色的终端输出通道
timeLayout 表示输出的时间格式,遵守 time.Format 的参数要求, 如果为空,则不输出时间信息; fore 表示终端信息的字符颜色,背景始终是默认色; w 表示终端的接口,可以是 os.Stderr 或是 os.Stdout, 如果是其它的实现者则会带控制字符一起输出;