log

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2020 License: MIT Imports: 10 Imported by: 3

Documentation

Overview

Package log micserver 中使用的 log 系统,支持 Syslog(系统信息)/Debug(调试)/Info(关心的)/ Warning(警告)/Error(错误)/Fatal(致命) 日志级别,日志可按大小/小时转储。 建议: 系统运行的各个细节/详细步骤使用 Syslog 级别记录,为了减小 log 系统造成的运算负担, 应该先使用 IsSyslogEnable() 判断 Syslog 级别的日志是否开启,再调用 Syslog() 记录; 业务的主要环节/关键节点的调试使用 Debug 级别记录; 业务造成的结果,或需要在后续运营维护中查看用户信息变更,使用 Info 级别记录; 客户端/用户的输入错误,或者系统设计意外的条件不满足,使用 Warning 级别记录; 该分布式系统内部的错误值(与客户端等无关),但是可以恢复或者对业务逻辑没有影响时, 使用 Error 级别记录; 在 Error 级别的基础上,如果错误无法代码恢复或者对业务逻辑产生必要影响时,使用 Fatal 级别记录。 在生产环境/正式环境中,应该将日志等级至高调整至 Info ,在需要必要的调试信息时, 可调整至 Debug 。不要在正式环境中启用 Syslog 日志等级,你只应该在开发环境中使用它。 Warning / Error / Fatal 日志级别,无论何时你都要谨慎关闭他们,如果你确定不关心 你业务的信息,可以调整至 Warning 级别,但是无论如何,关闭警告或者错误都是一个极具风险 的决定。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNilLogger       = errors.New("logger is nil")
	ErrUnknownLogLevel = errors.New("unknown log level")
)

error

Functions

func Debug

func Debug(fmt string, args ...interface{})

Debug 默认 Logger 异步输出一条 Debug 级别的日志

func Error

func Error(fmt string, args ...interface{})

Error 默认 Logger 异步输出一条 Error 级别的日志

func Fatal

func Fatal(fmt string, args ...interface{})

Fatal 默认 Logger 异步输出一条 Fatal 级别的日志

func Info

func Info(fmt string, args ...interface{})

Info 默认 Logger 异步输出一条 Info 级别的日志

func IsDebugEnable

func IsDebugEnable() bool

IsDebugEnable 默认 Logger 判断 Debug 日志级别是否开启

func IsErrorEnable

func IsErrorEnable() bool

IsErrorEnable 默认 Logger 判断 Error 日志级别是否开启

func IsFatalEnable

func IsFatalEnable() bool

IsFatalEnable 默认 Logger 判断 Fatal 日志级别是否开启

func IsInfoEnable

func IsInfoEnable() bool

IsInfoEnable 默认 Logger 判断 Warn 日志级别是否开启

func IsSyslogEnable

func IsSyslogEnable() bool

IsSyslogEnable 默认 Logger 判断 Syslog 日志级别是否开启

func IsWarnEnable

func IsWarnEnable() bool

IsWarnEnable 默认 Logger 判断 Info 日志级别是否开启

func SetDefaultLogger

func SetDefaultLogger(l *Logger)

SetDefaultLogger 设置默认 Logger

func SetLogLevel

func SetLogLevel(lvl Level)

SetLogLevel 默认 Logger 设置日志等级

func SetLogLevelByStr

func SetLogLevelByStr(lvl string) error

SetLogLevelByStr 默认 Logger 使用等级名设置日志等级

func Syslog

func Syslog(fmt string, args ...interface{})

Syslog 默认 Logger 异步输出一条 Syslog 级别的日志

func Warn

func Warn(fmt string, args ...interface{})

Warn 默认 Logger 异步输出一条 Warn 级别的日志

Types

type Flusher

type Flusher interface {
	Flush() error
}

Flusher 刷新输出

type ILogger

type ILogger interface {
	Syslog(fmt string, args ...interface{})
	Debug(fmt string, args ...interface{})
	Warn(fmt string, args ...interface{})
	Info(fmt string, args ...interface{})
	Error(fmt string, args ...interface{})
	Fatal(fmt string, args ...interface{})
	IsSyslogEnable() bool
	IsDebugEnable() bool
	IsWarnEnable() bool
	IsInfoEnable() bool
	IsErrorEnable() bool
	IsFatalEnable() bool
	Clone() *Logger
	SetTopic(topic string)
	GetLogLevel() int32
	SetLogName(logname string)
	GetLogger() *Logger
}

ILogger 日志系统实现的接口

type Level

type Level int

Level type of log level

const (
	SYS     Level = 0
	DEBUG   Level = 1
	INFO    Level = 2
	WARNING Level = 3
	ERROR   Level = 4
	FATAL   Level = 5
)

日志等级

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

Logger 日志实例

func GetDefaultLogger

func GetDefaultLogger() *Logger

GetDefaultLogger 获取默认 Logger

func NewLogger

func NewLogger(optp *Options) *Logger

NewLogger 构造一个日志

func (*Logger) Clone

func (l *Logger) Clone() *Logger

Clone 浅拷贝出一个 Logger ,他们具备相同的底层写入接口, 需要注意的是,克隆出来的logger对象在写入器中会依旧受到源拷贝对象的影响

func (*Logger) Debug

func (l *Logger) Debug(fmt string, args ...interface{})

Debug 异步输出一条 Debug 级别的日志

func (*Logger) Error

func (l *Logger) Error(fmt string, args ...interface{})

Error 异步输出一条 Error 级别的日志

func (*Logger) Fatal

func (l *Logger) Fatal(fmt string, args ...interface{})

Fatal 异步输出一条 Fatal 级别的日志

func (*Logger) GetLogger

func (l *Logger) GetLogger() *Logger

GetLogger 获取当前 Logger 的 Logger ,意义在于会进行接收器 Logger 是否为空的判断, 如果为空,底层默认会使用 defaultLogger 操作,因此返回 defaultLogger 。

func (*Logger) Info

func (l *Logger) Info(fmt string, args ...interface{})

Info 异步输出一条 Info 级别的日志

func (*Logger) IsDebugEnable

func (l *Logger) IsDebugEnable() bool

IsDebugEnable 判断 Debug 日志级别是否开启

func (*Logger) IsErrorEnable

func (l *Logger) IsErrorEnable() bool

IsErrorEnable 判断 Error 日志级别是否开启

func (*Logger) IsFatalEnable

func (l *Logger) IsFatalEnable() bool

IsFatalEnable 判断 Fatal 日志级别是否开启

func (*Logger) IsInfoEnable

func (l *Logger) IsInfoEnable() bool

IsInfoEnable 判断 Warn 日志级别是否开启

func (*Logger) IsSyslogEnable

func (l *Logger) IsSyslogEnable() bool

IsSyslogEnable 判断 Syslog 日志级别是否开启

func (*Logger) IsWarnEnable

func (l *Logger) IsWarnEnable() bool

IsWarnEnable 判断 Info 日志级别是否开启

func (*Logger) SetLogLevel

func (l *Logger) SetLogLevel(lvl Level)

SetLogLevel 设置日志等级

func (*Logger) SetLogLevelByStr

func (l *Logger) SetLogLevelByStr(lvl string) error

SetLogLevelByStr 使用等级名设置日志等级

func (*Logger) SetLogName

func (l *Logger) SetLogName(logname string)

SetLogName 设置日志名称,一般使用进程或者模块名字

func (*Logger) SetTopic

func (l *Logger) SetTopic(topic string) error

SetTopic 设置该日志主题,一般设置为 SetLogName() 的下一级系统名称

func (*Logger) Syslog

func (l *Logger) Syslog(fmt string, args ...interface{})

Syslog 异步输出一条 Syslog 级别的日志

func (*Logger) Warn

func (l *Logger) Warn(fmt string, args ...interface{})

Warn 异步输出一条 Warn 级别的日志

type Options

type Options struct {
	// NoConsole while remove console out put, default false.
	NoConsole bool
	// NoConsoleColor whil disable console output color, default false.
	NoConsoleColor bool
	// FilePaths is the log output file path, default none log file.
	FilePaths []string
	// RecordTimeLayout use for (time.Time).Format(layout string) record time field, default "060102-15:04:05",
	// will not be empty.
	RecordTimeLayout string
	// Level log record level limit, only higer thie level log can be get reach Writer, default SYS.
	Level Level
	// Name is thie logger name, default "".
	Name string
	// Topic is thie logger topic, default "".
	Topic string
	// AsyncWrite while asynchronously output the log record to Write, it may be more performance,
	// but if you exit(e.g. os.Exit(1), main() return) this process, it may be loss some log record,
	// because they didn't have time to Write and flush to file.
	AsyncWrite bool
	// AsyncWriteDuration only effective when AsyncWrite is true, this is time duration of asynchronously
	// check log output to write default 100ms.
	AsyncWriteDuration time.Duration
	// RedirectError duplicate stderr to log file, it will be call syscall.Dup2 in linux or syscall.DuplicateHandle
	// in windows, default false.
	RedirectError bool
	// RotateTimeLayout use of (time.Time).Format(layout string) to check if a roteta file is required.
	// default "", will disable rotate. Highest accuracy is minutes.
	RotateTimeLayout string
}

Options of log

func (*Options) Check

func (o *Options) Check()

Check options

type Record

type Record struct {
	// contains filtered or unexported fields
}

Record 一条日志记录

func (*Record) String

func (r *Record) String() string

String 格式化该日志记录字符串

type Rotater

type Rotater interface {
	Rotate() error
	RotateByTime(*time.Time) error
}

Rotater 转储器实现的接口

type Writer

type Writer interface {
	Write(*Record) error
}

Writer 输出器实现的接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL