klog

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2023 License: Apache-2.0, Apache-2.0 Imports: 7 Imported by: 0

README

介绍

wego/klog用GO语言实现的一个高性能的结构化日志包,wego/klog用于生成统计型日志。主要特征:

  1. wego/klog支持按照天或小时进行日志文件的滚动输出。
  2. 采用基于buffer的文件输出方式,满足高性能输出日志。
  3. 采用链式api来添加字段。

安装

go get github.com/haming123/wego/klog

快速上手

package main
import "github.com/haming123/wego/klog"
func main() {
	klog.InitEngine("./logs", klog.ROTATE_DAY);
	defer klog.Close()

	klog.NewLog("login").UserId("user_1").Add("login_type", "weixin").Output()
	klog.NewLog("index").ClientIP("127.0.0.1:666").Add("exe", 12).Output()
}

输出内容为:

_ctm=2021/12/02 11:44:02 `_tname=login `_uid=user_1 `login_type=weixin ` 
_ctm=2021/12/02 11:44:02 `_tname=index `_cip=127.0.0.1:666 `exe=12 ` 

日志格式以及常用字段

日志格式采用key=value的格式,字段之间采用" `"来分隔,日志行之间采用" \n" 来分隔,例如:

    k1=v1 `k2=v2 `...... \n
    k1=v1 `k2=v2 `...... \n

若字段的内容有"`"符号,则编码为"\`"。同样若字段的内容有"\n"符号,则编码为"\\n"。例如若_uid=hello`, 则日志输出为:

_ctm=2021/12/02 11:44:02 `_tname=demo `_uid=hello\` `login_type=test `.

klog在输出日志时自动添加了日志的创建时间:_ctm,例如:

_ctm=2021/12/02 11:44:02 `_tname=login `_uid=user_1 `login_type=weixin ` 

wego/klog内置了一下常用的字段:

  1. _ctm:日志创建时间,必填字段
  2. _etm:代码执行时间,可选字段
  3. _tname:日志类型,必填字段,使用时可以看作为数据库的库表
  4. _fname:可选字段,通常为接口的名称或页面的名称
  5. _cip:可选字段,客户端的IP
  6. _uid:可选字段,用户ID

代码的执行时间

wego/klog支持在日志中输出代码的执行时间:

package main
import (
	"github.com/haming123/wego/klog"
	"time"
)
func main() {
	var klog = klog.NewEngine("./logs", klog.ROTATE_DAY)
	defer klog.Close()
	bet_time := time.Now()

	//代码逻辑开始
	//...
	//代码逻辑结束

	klog.NewLog("table_name").BeginTime(bet_time).UserId("user_name").Output()
}

输出内容为:

_ctm=2021/12/02 12:32:29 `_tname=table_name `_uid=user_name `_etm=2 `  

其中etm便是代码的执行时间(单位:毫秒)

性能指标

BenchmarkWriteLog-6      1223031		991.0 ns/op			5 allocs/op

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Close

func Close()

func GetDayBegin added in v0.3.2

func GetDayBegin(d time.Time) time.Time

func GetHourBegin added in v0.3.2

func GetHourBegin(d time.Time) time.Time

func GetLineEncodeFlag

func GetLineEncodeFlag(data []byte) bool

func LineFieldDecode

func LineFieldDecode(data []byte) []byte

func LogLineDecode

func LogLineDecode(data []byte) map[string]string

func SetDebugLogLevel

func SetDebugLogLevel(l Level)

Types

type BufferWriter

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

func NewBufferWriter

func NewBufferWriter(name string, flag int, perm os.FileMode) (*BufferWriter, error)

func (*BufferWriter) Available

func (b *BufferWriter) Available() int

func (*BufferWriter) Buffered

func (b *BufferWriter) Buffered() int

func (*BufferWriter) Close

func (b *BufferWriter) Close() error

func (*BufferWriter) Flush

func (b *BufferWriter) Flush() error

func (*BufferWriter) Name

func (b *BufferWriter) Name() string

func (*BufferWriter) Reset

func (b *BufferWriter) Reset()

func (*BufferWriter) Size

func (b *BufferWriter) Size() int

func (*BufferWriter) Write

func (b *BufferWriter) Write(data []byte) (nn int, err error)

type FileWriter

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

func NewFileWriter

func NewFileWriter(file_path string, rotate RotateType) *FileWriter

func (*FileWriter) Close

func (fw *FileWriter) Close() error

func (*FileWriter) Flush

func (fw *FileWriter) Flush() error

func (*FileWriter) Write

func (fw *FileWriter) Write(tm time.Time, data []byte)

type Level

type Level int
const (
	LOG_OFF Level = iota
	LOG_FATAL
	LOG_ERROR
	LOG_WARN
	LOG_INFO
	LOG_DEBUG
)

type LogBuffer

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

func NewLogBuffer

func NewLogBuffer() *LogBuffer

func NewLogBufferSize

func NewLogBufferSize(size int) *LogBuffer

func (*LogBuffer) Available

func (b *LogBuffer) Available() int

func (*LogBuffer) Buffered

func (b *LogBuffer) Buffered() int

func (*LogBuffer) Extend

func (b *LogBuffer) Extend(size int)

func (*LogBuffer) GetBytes

func (b *LogBuffer) GetBytes() []byte

func (*LogBuffer) Reset

func (b *LogBuffer) Reset()

func (*LogBuffer) Size

func (b *LogBuffer) Size() int

func (*LogBuffer) Write

func (b *LogBuffer) Write(data []byte)

func (*LogBuffer) WriteByte

func (b *LogBuffer) WriteByte(c byte)

func (*LogBuffer) WriteString

func (b *LogBuffer) WriteString(s string)

func (*LogBuffer) WriteTimeString

func (b *LogBuffer) WriteTimeString(t time.Time)

type LogEngine added in v0.3.2

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

func GetEngine added in v0.3.2

func GetEngine() *LogEngine

func InitEngine added in v0.3.2

func InitEngine(lpath string, rtype RotateType) *LogEngine

func NewEngine added in v0.3.2

func NewEngine(lpath string, rtype RotateType) *LogEngine

func (*LogEngine) Close added in v0.3.2

func (eng *LogEngine) Close() error

func (*LogEngine) Flush added in v0.3.2

func (eng *LogEngine) Flush() error

func (*LogEngine) GenCurLogFile added in v0.3.2

func (eng *LogEngine) GenCurLogFile() string

func (*LogEngine) GetCurLogFile added in v0.3.2

func (eng *LogEngine) GetCurLogFile() string

func (*LogEngine) NewLog added in v0.3.2

func (eng *LogEngine) NewLog(class_name string) *LogRow

func (*LogEngine) Output added in v0.3.2

func (eng *LogEngine) Output(row *LogRow)

type LogFeild

type LogFeild struct {
	Field string
	Value interface{}
}

type LogRow added in v0.3.2

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

func NewLog added in v0.3.2

func NewLog(class_name string) *LogRow

func (*LogRow) Add added in v0.3.2

func (row *LogRow) Add(fld string, val interface{}) *LogRow

func (*LogRow) Begin added in v0.3.2

func (row *LogRow) Begin() *LogRow

func (*LogRow) BeginTime added in v0.3.2

func (row *LogRow) BeginTime(btime time.Time) *LogRow

func (*LogRow) ClientIP added in v0.3.2

func (row *LogRow) ClientIP(val string) *LogRow

func (*LogRow) Encode added in v0.3.2

func (row *LogRow) Encode(pbuf *LogBuffer)

func (*LogRow) FuncName added in v0.3.2

func (row *LogRow) FuncName(val string) *LogRow

func (*LogRow) Output added in v0.3.2

func (row *LogRow) Output()

func (*LogRow) Reset added in v0.3.2

func (row *LogRow) Reset()

func (*LogRow) TableName added in v0.3.2

func (row *LogRow) TableName(val string) *LogRow

func (*LogRow) UserId added in v0.3.2

func (row *LogRow) UserId(val string) *LogRow

func (*LogRow) WriteEncodeString added in v0.3.2

func (row *LogRow) WriteEncodeString(pbuf *LogBuffer, data string)

func (*LogRow) WriteLogFieldSpliter added in v0.3.2

func (row *LogRow) WriteLogFieldSpliter(pbuf *LogBuffer)

func (*LogRow) WriteLogLineSpliter added in v0.3.2

func (row *LogRow) WriteLogLineSpliter(pbuf *LogBuffer)

type RotateType

type RotateType int
const (
	ROTATE_DAY RotateType = iota
	ROTATE_HOUR
)

type SimpleLogger

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

func NewSimpleLogger

func NewSimpleLogger() *SimpleLogger

func (*SimpleLogger) Debug

func (lg *SimpleLogger) Debug(v ...interface{})

func (*SimpleLogger) Debugf

func (lg *SimpleLogger) Debugf(format string, v ...interface{})

func (*SimpleLogger) Error

func (lg *SimpleLogger) Error(v ...interface{})

func (*SimpleLogger) Errorf

func (lg *SimpleLogger) Errorf(format string, v ...interface{})

func (*SimpleLogger) Fatal

func (lg *SimpleLogger) Fatal(v ...interface{})

func (*SimpleLogger) Fatalf

func (lg *SimpleLogger) Fatalf(format string, v ...interface{})

func (*SimpleLogger) Info

func (lg *SimpleLogger) Info(v ...interface{})

func (*SimpleLogger) Infof

func (lg *SimpleLogger) Infof(format string, v ...interface{})

func (*SimpleLogger) Output

func (lg *SimpleLogger) Output(level_str string, msg string) error

func (*SimpleLogger) SetLevel

func (lg *SimpleLogger) SetLevel(l Level)

func (*SimpleLogger) Warn

func (lg *SimpleLogger) Warn(v ...interface{})

func (*SimpleLogger) Warnf

func (lg *SimpleLogger) Warnf(format string, v ...interface{})

Jump to

Keyboard shortcuts

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