Documentation ¶
Index ¶
- Constants
- Variables
- func GotError(err error)
- func GotFatal(v interface{})
- func GotInfo(format string, args ...interface{})
- type Attr
- type Backtrace
- type BacktraceItem
- type ClientSpan
- type CommonSpan
- type Level
- type Log
- type LogFormatter
- type LogSender
- type LoggerSpan
- type Memory
- type ReporterSpan
- type ReporterType
- type SenderType
- type SpanID
- type SpanProfile
- type SpanReporter
- type SpanSampled
- type TraceID
Constants ¶
View Source
const ( GotName = "got" GotVersion = "1.0" )
View Source
const (
SpanKeyword = "__GOT_SPAN_KEYWORD__"
)
Variables ¶
View Source
var ( // DebuggerEnabled // 调试模式状态. // // 当在项目运行目录下发现文件 `.got` 是, 启用调试模式. DebuggerEnabled = false )
Functions ¶
Types ¶
type Attr ¶
type Attr struct {
// contains filtered or unexported fields
}
Attr Key/Value 键值对.
用于记录关键数据, 常用的应用场景:
- authorization: jwt token
- member.id: 3721
- request.method: POST
- request.url: /api/v1/user/123
type Backtrace ¶
type Backtrace interface { // Count // 计算栈元素数量. Count() int // Empty // 返回是否为空. Empty() bool // Items // 返回栈元素列表. Items() []*BacktraceItem // String // 以字符串格式返回栈信息. // // 0 # main.main1() at /workspace/main.go:12 // 1 # main.main() at /workspace/main.go:5 String() string }
Backtrace 异常栈, 当日志级别为 FATAL 时附加到日志中.
type BacktraceItem ¶
BacktraceItem 栈元素.
type ClientSpan ¶
type ClientSpan interface { CommonSpan LoggerSpan Child(name string) ClientSpan End() }
ClientSpan 调用链Span客户端接口.
此接口开放给Span客户端(HTTP、RPC)的生成周期管理方法.
type CommonSpan ¶
type CommonSpan interface { Attr() *Attr Context() context.Context Name() string ParentSpanID() SpanID SpanID() SpanID TraceID() TraceID }
CommonSpan 调用链Span通用接口.
type Level ¶
type Level string
Level 日志级别.
type Log ¶
type Log interface { // Clone // 从Log上克隆一个新的Log. Clone() Log // GetBacktrace // 读取异常栈. GetBacktrace() Backtrace GetDuration() time.Duration GetLevel() Level GetMessage() string GetParentSpanID() SpanID GetSpanID() SpanID GetTime() time.Time GetTraceID() TraceID Release() // CopySpan // 复制Span参数. // // 将Span的链路参数复制到新Log实例中. CopySpan(span ReporterSpan) Log // CopyDuration // 复制Span时长. // // 将Span的执行时长复制到新Log实例中. CopyDuration(duration time.Duration) Log // CopyProfile // 复制Span信息. CopyProfile(p *SpanProfile) Log // CopyTime // 复制Span时间. // // 将Span的开始时间复制到新Log实例中. CopyTime(t time.Time) Log }
Log 单条日志接口.
type LogFormatter ¶
LogFormatter 日志格式化接口.
type LogSender ¶
type LogSender interface { // Send // 发送日志. Send(logs ...Log) // SetFormatter // 设置格式化. SetFormatter(formatter LogFormatter) // Wait // 等待发送完成. // // 一般在服务退出前显性调用. 发送日志(非TERM模式)是异步、批量提交的, 安全退出时需要 // 等待内存中未发送或发送中的日志全部处理完成. Wait() }
LogSender 日志上报接口.
- elasticsearch
- file
- kafka
- term (default)
type LoggerSpan ¶
type LoggerSpan interface { Debug(format string, args ...interface{}) Error(format string, args ...interface{}) Fatal(format string, args ...interface{}) Info(format string, args ...interface{}) Warn(format string, args ...interface{}) }
LoggerSpan 调用链Span操作日志接口.
type Memory ¶
type Memory[T any] struct { // contains filtered or unexported fields }
Memory 内存暂存管理.
该组件用于存储Log/Span数据, 异步处理器时从此处取出并上报到指定位置.
func (*Memory[T]) Add ¶
func (o *Memory[T]) Add(items ...T)
Add 加入暂存.
若内存中暂存的数据达到阈值时立即触发上报, 反之等待异步任务定时/自动触发.
func (*Memory[T]) SetConcurrency ¶
SetConcurrency 设置并行阈值.
func (*Memory[T]) SetFrequency ¶
SetFrequency 设置频率阈值.
type ReporterSpan ¶
type ReporterSpan interface { CommonSpan Duration() time.Duration EndTime() time.Time Logs() []Log Release() Sampled() SpanSampled StartTime() time.Time }
ReporterSpan 调用链Span上报接口.
此接口开放给Span上报(Jaeger、Zipkin)的只读方法.
type ReporterType ¶
type ReporterType string
ReporterType Span上报类型.
const ( JaegerReporter ReporterType = "jaeger" NoopReporter ReporterType = "noop" ZipkinReporter ReporterType = "zipkin" )
func (ReporterType) Defaulter ¶
func (o ReporterType) Defaulter() ReporterType
Defaulter 校验Span上报类型合法性, 若未定义或为空或不合法则返回默认(Noop)类型.
type SenderType ¶
type SenderType string
SenderType 日志上报类型.
const ( // ElasticSender // 上报到<elasticsearch>服务器上. ElasticSender SenderType = "elasticsearch" // FileSender // 写入到本地文件. FileSender SenderType = "file" // KafkaSender // 上报到<kafka>服务器上. KafkaSender SenderType = "kafka" // TermSender // 在终端上打印. TermSender SenderType = "term" )
func (SenderType) Defaulter ¶
func (o SenderType) Defaulter() SenderType
Defaulter 校验日志上报类型合法性, 若未定义或为空或不合法则返回默认(Term)类型.
type SpanProfile ¶ added in v1.0.2
func NewSpanProfile ¶ added in v1.0.2
func NewSpanProfile(span ClientSpan) *SpanProfile
type SpanReporter ¶
type SpanReporter interface { // Publish // 批量上报. Publish(spans ...ReporterSpan) // Wait // 等待完成. // // 一般在服务退出前显性调用. 上报 Span 是异步、批量提交的, 安全退出时需要等待 // 内存中待上报或上报中的 Span 全部处理完成. Wait() }
SpanReporter Span上报接口.
- jaeger
- zipkin
type SpanSampled ¶
type SpanSampled string
SpanSampled Span采样.
const ( SampledNo SpanSampled = "0" SampledYes SpanSampled = "1" )
func (SpanSampled) Disabled ¶
func (o SpanSampled) Disabled() bool
func (SpanSampled) Enabled ¶
func (o SpanSampled) Enabled() bool
Click to show internal directories.
Click to hide internal directories.