survey

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Close

func Close(names ...string)

Close 关闭运营日志记录器

func Flush

func Flush(names ...string)

Flush 将运营日志记录器的缓冲区数据写入到文件

  • name 为空时,将所有记录器的缓冲区数据写入到文件

func IncrementAnalyze added in v0.3.3

func IncrementAnalyze(filePath string, handle func(analyzer *Analyzer, record R)) func() (*Report, error)

IncrementAnalyze 增量分析,返回一个函数,每次调用该函数都会分析文件中新增的内容

func Record

func Record(name string, data map[string]any)

Record 记录一条运营日志

func RecordBytes added in v0.2.8

func RecordBytes(name string, data []byte)

RecordBytes 记录一条运营日志

func Reg

func Reg(name string, flusher Flusher, options ...Option)

Reg 注册一个运营日志记录器

Types

type Analyzer added in v0.1.4

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

Analyzer 分析器

func (*Analyzer) GetValue added in v0.2.9

func (slf *Analyzer) GetValue(key string) float64

GetValue 获取当前记录的值

func (*Analyzer) GetValueString added in v0.2.9

func (slf *Analyzer) GetValueString(key string) string

GetValueString 获取当前记录的值

func (*Analyzer) Increase added in v0.1.4

func (slf *Analyzer) Increase(key string, record R, recordKey string)

Increase 在指定 key 现有值的基础上增加 recordKey 的值

  • 当分析器已经记录过相同 key 的值时,会根据已有的值类型进行不同处理

处理方式:

  • 当已有值类型为 string 时,将会使用新的值的 string 类型进行覆盖
  • 当已有值类型为 float64 时,当新的值类型不为 float64 时,将会被忽略

func (*Analyzer) IncreaseNonRepeat added in v0.1.4

func (slf *Analyzer) IncreaseNonRepeat(key string, record R, recordKey string, dimension ...string)

IncreaseNonRepeat 在指定 key 现有值的基础上增加 recordKey 的值,但是当去重维度 dimension 相同时,不会增加

func (*Analyzer) IncreaseValue added in v0.1.4

func (slf *Analyzer) IncreaseValue(key string, value float64)

IncreaseValue 在指定 key 现有值的基础上增加 value

func (*Analyzer) IncreaseValueNonRepeat added in v0.1.4

func (slf *Analyzer) IncreaseValueNonRepeat(key string, record R, value float64, dimension ...string)

IncreaseValueNonRepeat 在指定 key 现有值的基础上增加 value,但是当去重维度 dimension 相同时,不会增加

func (*Analyzer) SetFormat added in v0.3.3

func (slf *Analyzer) SetFormat(key string, format func(v any) any)

SetFormat 设置格式化函数

func (*Analyzer) SetValue added in v0.2.9

func (slf *Analyzer) SetValue(key string, value float64)

SetValue 设置指定 key 的值

func (*Analyzer) SetValueIf added in v0.2.9

func (slf *Analyzer) SetValueIf(key string, expression bool, value float64)

SetValueIf 当表达式满足的时候将设置指定 key 的值为 value

func (*Analyzer) SetValueIfGreaterThan added in v0.2.9

func (slf *Analyzer) SetValueIfGreaterThan(key string, value float64)

SetValueIfGreaterThan 设置指定 key 的值,当新值大于旧值时

  • 当已有值不为 float64 时,将会被忽略

func (*Analyzer) SetValueIfLessThan added in v0.2.9

func (slf *Analyzer) SetValueIfLessThan(key string, value float64)

SetValueIfLessThan 设置指定 key 的值,当新值小于旧值时

  • 当已有值不为 float64 时,将会被忽略

func (*Analyzer) SetValueString added in v0.2.9

func (slf *Analyzer) SetValueString(key string, value string)

SetValueString 设置指定 key 的值

func (*Analyzer) SetValueStringIf added in v0.2.9

func (slf *Analyzer) SetValueStringIf(key string, expression bool, value string)

SetValueStringIf 当表达式满足的时候将设置指定 key 的值为 value

func (*Analyzer) Sub added in v0.1.4

func (slf *Analyzer) Sub(key string) *Analyzer

Sub 获取子分析器

type FileFlusher added in v0.1.2

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

func NewFileFlusher added in v0.1.2

func NewFileFlusher(filePath string, layout ...string) *FileFlusher

NewFileFlusher 创建一个文件刷新器

  • layout 为日志文件名的时间戳格式 (默认为 time.DateOnly)

func (*FileFlusher) Flush added in v0.1.2

func (slf *FileFlusher) Flush(records []string)

func (*FileFlusher) Info added in v0.1.2

func (slf *FileFlusher) Info() string

type Flusher added in v0.1.2

type Flusher interface {
	// Flush 将缓冲区的数据持久化
	Flush(records []string)
	// Info 返回当前刷新器的信息
	Info() string
}

Flusher 用于刷新缓冲区的接口

type Option

type Option func(logger *logger)

Option 选项

func WithFlushInterval

func WithFlushInterval(interval time.Duration) Option

WithFlushInterval 设置日志文件刷新间隔

  • 默认为 3s,当日志文件刷新间隔 <= 0 时,将会在每次写入日志时刷新日志文件

type R

type R string

R 记录器所记录的一条数据

func (R) Exist

func (slf R) Exist(key string) bool

Exist 判断指定 key 是否存在

func (R) Get

func (slf R) Get(key string) Result

Get 获取指定 key 的值

func (R) GetBool

func (slf R) GetBool(key string) bool

GetBool 该函数为 Get(key).Bool() 的简写

func (R) GetFloat64

func (slf R) GetFloat64(key string) float64

GetFloat64 该函数为 Get(key).Float() 的简写

func (R) GetInt

func (slf R) GetInt(key string) int

GetInt 该函数为 Get(key).Int() 的简写,但是返回值为 int 类型

func (R) GetInt64

func (slf R) GetInt64(key string) int64

GetInt64 该函数为 Get(key).Int() 的简写

func (R) GetString

func (slf R) GetString(key string) string

GetString 该函数为 Get(key).String() 的简写

func (R) GetTime added in v0.1.5

func (slf R) GetTime(layout string) time.Time

GetTime 获取该记录的时间

func (R) String

func (slf R) String() string

type Report added in v0.1.4

type Report struct {
	Name    string           // 报告名称(默认为 ROOT)
	Values  map[string]any   `json:"Values,omitempty"`
	Counter map[string]int64 `json:"Count,omitempty"`
	Subs    []*Report        `json:"Reports,omitempty"`
	// contains filtered or unexported fields
}

Report 分析报告

func Analyze added in v0.1.4

func Analyze(filePath string, handle func(analyzer *Analyzer, record R)) *Report

Analyze 分析特定文件的记录,当发生错误时,会发生 panic

  • handle 为并行执行的,需要自行处理并发安全
  • 适用于外部进程对于日志文件的读取,但是需要注意的是,此时日志文件可能正在被写入,所以可能会读取到错误的数据

func AnalyzeMulti added in v0.1.5

func AnalyzeMulti(filePaths []string, handle func(analyzer *Analyzer, record R)) *Report

AnalyzeMulti 与 Analyze 类似,但是可以分析多个文件

func (*Report) Avg added in v0.1.6

func (slf *Report) Avg(key string) float64

Avg 计算平均值

func (*Report) Count added in v0.1.6

func (slf *Report) Count(key string) int64

Count 获取特定 key 的计数次数

func (*Report) FilterSub added in v0.1.4

func (slf *Report) FilterSub(names ...string) *Report

FilterSub 将特定名称的子报告过滤掉

func (*Report) ReserveSub added in v0.1.4

func (slf *Report) ReserveSub(names ...string) *Report

ReserveSub 仅保留特定名称子报告

func (*Report) ReserveSubByPrefix added in v0.2.9

func (slf *Report) ReserveSubByPrefix(prefix string) *Report

ReserveSubByPrefix 仅保留特定前缀的子报告

func (*Report) String added in v0.1.4

func (slf *Report) String() string

func (*Report) Sub added in v0.1.6

func (slf *Report) Sub(name string) *Report

Sub 获取特定名称的子报告

func (*Report) Sum added in v0.1.6

func (slf *Report) Sum(keys ...string) float64

Sum 获取特定 key 的总和

type Result

type Result = gjson.Result

Jump to

Keyboard shortcuts

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