Documentation ¶
Overview ¶
logs为日志处理包,相对于标准库的log,添加了对分级日志的支持, 以及在不需要重新编译源代码的情况下,修改日志输出行为的功能。
以下是一个简短的xml配置文件范本,具体的可参考目录下的config.xml 文件。
<?xml version="1.0" encoding="utf-8" ?> <logs> <debug> <buffer size="10"> <rotate dir="/var/log/" size="5M" /> <stmp username=".." password=".." /> </buffer> </debug> <info> .... </info> </logs>
上面的配置文件表示LevelDebug级别的内容输出前都进被buffer实例进行 缓存,当量达到10条时,一次性向rotate和stmp输出。 其中buffer、rotate、stmp甚至是debug和logs都是一个个实现io.Writer 接口的结构。通过Register()向logs注册成功之后,即可以使用。
以下是包自带io.Writer实例,可以直接使用:
1. logs: 顶级元素,包会自动替换成LevelLogger。
2. info,deubg,trace,warn,error,critical: 配置文件中的二级元素,不支持自定义,填写其它名称会返回error。可以 指定prfix和flag属性,分别对应log.New()的prefix和flag参数,事实上, 最终也是调用log.Logger结构来输出日志的。
3. buffer: 一个简单的缓存工具,比如上面的示例中,所有向debug输出的内容,都会 被buffer缓存,直到数量达到10条,buffer才会一起向rotate和stmp输出内 容。只有一个size属性,用于指定缓存的数量。
4. rotate: 这是一个按文件大写自动分割日志的实例,允许dir和size两个属性。其中 dir表示的是日志存放的目录;size表示的是每个日志的大概大小,可以是 数值(单位为Byte)或是5M,5G等这类字符串(具体哪类字符串会被正确解析, 可参考conv包的ToByte()函数)。
5. stmp: 发送邮件的实例,可定义的属性为:username 发送邮件的账号;password 账号对应的密码;host stmp的主机;subject 邮件的主题;sendTo,接收 人地址,多个收件地址使用分号分隔。
6. console: 向控制台输出内容。可定义的属性为:color和output,其中output只能为 "os.Stderr","os.stdin", "os.stdout"三个值,表示输出的具体方向,默 认值为"os.stderr";而color表示输出时的颜色,为一个ansi颜色控制码 (在windows将原样输出),不指定时,默认为红包,term包中定义了部分颜色 值,可以直接拿来用。
其它一些注意事项:
1. 配置文件只支持utf-8编码; 2. 元素和属性区分大小写,但属性值不区分大小写; 3. 根元素必须为logs; 4. 二级元素只能是info、debug、trace、warn、error和critical分别对应 各个level元素;
自定义
除了以上定义的元素,用户也可以自定义一些新io.Writer以实现自定义的输 出功能。要添加新的元素,只需要向Register()函数注册一个元素的初始化函 数即可,其中注册的名称将作为配置节点的元素名称,需要唯一,不能与现有 的名称相同;函数则作为节点转换成实例时的转换功能,需要负责解析节点传 递过来的属性列表(args参数),若是一个容器节点(如buffer,可以包含子节 点)则返回的实例必须要实现WriteFlushAdder接口,该函数的原型为:
func(args map[string]string) (io.Writer, error)
具体可参考WriterInitializer。
注意事项:
根元素和二级元素不能自定义,也不能将根元素或是二级元素用于其它地方。
Index ¶
- Constants
- func Critical(v ...interface{})
- func Criticalf(format string, v ...interface{})
- func Debug(v ...interface{})
- func Debugf(format string, v ...interface{})
- func Error(v ...interface{})
- func Errorf(format string, v ...interface{})
- func Flush() (int, error)
- func Info(v ...interface{})
- func Infof(format string, v ...interface{})
- func InitFromFile(file string) (err error)
- func InitFromXml(r io.Reader) (err error)
- func IsRegisted(name string) bool
- func Printf(level int, format string, v ...interface{})
- func Println(level int, v ...interface{})
- func Registed() []string
- func Register(name string, init WriterInitializer) bool
- func ToStdLogger(level int) (log *log.Logger, ok bool)
- func Trace(v ...interface{})
- func Tracef(format string, v ...interface{})
- func Warn(v ...interface{})
- func Warnf(format string, v ...interface{})
- type LevelLogger
- func (l *LevelLogger) Add(w io.Writer) error
- func (l *LevelLogger) Critical(v ...interface{})
- func (l *LevelLogger) Criticalf(format string, v ...interface{})
- func (l *LevelLogger) Debug(v ...interface{})
- func (l *LevelLogger) Debugf(format string, v ...interface{})
- func (l *LevelLogger) Error(v ...interface{})
- func (l *LevelLogger) Errorf(format string, v ...interface{})
- func (l *LevelLogger) Flush() (size int, err error)
- func (l *LevelLogger) Info(v ...interface{})
- func (l *LevelLogger) Infof(format string, v ...interface{})
- func (l *LevelLogger) Printf(level int, format string, v ...interface{})
- func (l *LevelLogger) Println(level int, v ...interface{})
- func (l *LevelLogger) ToStdLogger(level int) (*log.Logger, bool)
- func (l *LevelLogger) Trace(v ...interface{})
- func (l *LevelLogger) Tracef(format string, v ...interface{})
- func (l *LevelLogger) Warn(v ...interface{})
- func (l *LevelLogger) Warnf(format string, v ...interface{})
- func (l *LevelLogger) Write(bs []byte) (int, error)
- type WriterInitializer
Constants ¶
const ( LevelInfo = iota LevelDebug LevelTrace LevelWarn LevelError LevelCritical )
const Version = "0.1.7.141023"
Variables ¶
This section is empty.
Functions ¶
func Critical ¶
func Critical(v ...interface{})
Critical相当于Println(v...)的简写方式 需要先调用Init(...)函数进行初始化。
func Criticalf ¶
func Criticalf(format string, v ...interface{})
Criticalf根目录于Printf(format, v...)的简写方式 需要先调用Init(...)函数进行初始化。
func Debugf ¶
func Debugf(format string, v ...interface{})
Debugf根目录于Printf(format, v...)的简写方式 需要先调用Init(...)函数进行初始化。
func Errorf ¶
func Errorf(format string, v ...interface{})
Errorf根目录于Printf(format, v...)的简写方式 需要先调用Init(...)函数进行初始化。
func Infof ¶
func Infof(format string, v ...interface{})
Infof根目录于Printf(format, v...)的简写方式 需要先调用Init(...)函数进行初始化。
func InitFromFile ¶
初始化一个默认的LevelLogger实例,之后可以 直接调用logs.Info(...)等函数。
func Register ¶
func Register(name string, init WriterInitializer) bool
注册一个initizlizer 返回值反映是否注册成功。若已经存在相同名称的,则返回false
func ToStdLogger ¶
将指定的level的日志转换成log.Logger实例 需要先调用Init(...)函数进行初始化。
Types ¶
type LevelLogger ¶
type LevelLogger struct {
// contains filtered or unexported fields
}
一个分级的日志系统
func (*LevelLogger) Critical ¶
func (l *LevelLogger) Critical(v ...interface{})
Critical相当于LevelLogger.Println(v...)的简写方式
func (*LevelLogger) Criticalf ¶
func (l *LevelLogger) Criticalf(format string, v ...interface{})
Criticalf根目录于LevelLogger.Printf(format, v...)的简写方式
func (*LevelLogger) Debug ¶
func (l *LevelLogger) Debug(v ...interface{})
Debug相当于LevelLogger.Println(v...)的简写方式
func (*LevelLogger) Debugf ¶
func (l *LevelLogger) Debugf(format string, v ...interface{})
Debugf根目录于LevelLogger.Printf(format, v...)的简写方式
func (*LevelLogger) Error ¶
func (l *LevelLogger) Error(v ...interface{})
Error相当于LevelLogger.Println(v...)的简写方式
func (*LevelLogger) Errorf ¶
func (l *LevelLogger) Errorf(format string, v ...interface{})
Errorf根目录于LevelLogger.Printf(format, v...)的简写方式
func (*LevelLogger) Flush ¶
func (l *LevelLogger) Flush() (size int, err error)
writer.FlushAdder.Flush()
func (*LevelLogger) Info ¶
func (l *LevelLogger) Info(v ...interface{})
Info相当于LevelLogger.Println(v...)的简写方式
func (*LevelLogger) Infof ¶
func (l *LevelLogger) Infof(format string, v ...interface{})
Infof根目录于LevelLogger.Printf(format, v...)的简写方式
func (*LevelLogger) Printf ¶
func (l *LevelLogger) Printf(level int, format string, v ...interface{})
向指定level的日志输出一条信息
func (*LevelLogger) Println ¶
func (l *LevelLogger) Println(level int, v ...interface{})
向指定level的日志输出一行信息
func (*LevelLogger) ToStdLogger ¶
func (l *LevelLogger) ToStdLogger(level int) (*log.Logger, bool)
将指定的level的日志转换成log.Logger实例
func (*LevelLogger) Trace ¶
func (l *LevelLogger) Trace(v ...interface{})
Trace相当于LevelLogger.Println(v...)的简写方式
func (*LevelLogger) Tracef ¶
func (l *LevelLogger) Tracef(format string, v ...interface{})
Tracef根目录于LevelLogger.Printf(format, v...)的简写方式
func (*LevelLogger) Warn ¶
func (l *LevelLogger) Warn(v ...interface{})
Warn相当于LevelLogger.Println(v...)的简写方式
func (*LevelLogger) Warnf ¶
func (l *LevelLogger) Warnf(format string, v ...interface{})
Warnf根目录于LevelLogger.Printf(format, v...)的简写方式