loggers

package
v1.1.4 Latest Latest
Warning

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

Go to latest
Published: May 3, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LevelDebug = "debug" // 除錯訊息
	LevelInfo  = "info"  // 一般訊息
	LevelWarn  = "warn"  // 警告訊息
	LevelError = "error" // 錯誤訊息
)

Variables

This section is empty.

Functions

This section is empty.

Types

type EmptyLogger

type EmptyLogger struct {
}

EmptyLogger 空日誌, 作為預設的日誌使用, 不會輸出任何訊息

func (*EmptyLogger) Finalize

func (this *EmptyLogger) Finalize()

Finalize 結束處理

func (*EmptyLogger) Get

func (this *EmptyLogger) Get() Retain

Get 取得儲存器

func (*EmptyLogger) Initialize

func (this *EmptyLogger) Initialize() error

Initialize 初始化處理

type EmptyRetain

type EmptyRetain struct {
}

EmptyRetain 空儲存

func (*EmptyRetain) Clear

func (this *EmptyRetain) Clear() Retain

Clear 清空內部 Stream 列表

func (*EmptyRetain) Debug

func (this *EmptyRetain) Debug(_ string) Stream

Debug 記錄除錯訊息, 用於記錄除錯訊息

func (*EmptyRetain) Error

func (this *EmptyRetain) Error(_ string) Stream

Error 記錄錯誤訊息, 用於記錄嚴重錯誤

func (*EmptyRetain) Flush

func (this *EmptyRetain) Flush() Retain

Flush 儲存並清空內部 Stream 列表

func (*EmptyRetain) Info

func (this *EmptyRetain) Info(_ string) Stream

Info 記錄一般訊息, 用於記錄一般訊息

func (*EmptyRetain) Warn

func (this *EmptyRetain) Warn(_ string) Stream

Warn 記錄警告訊息, 用於記錄邏輯錯誤

type EmptyStream

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

EmptyStream 空記錄

func (*EmptyStream) Caller

func (this *EmptyStream) Caller(_ int) Stream

Caller 記錄呼叫位置

func (*EmptyStream) End

func (this *EmptyStream) End() Retain

End 結束記錄, 並把記錄加回到 Retain 中

func (*EmptyStream) EndFlush

func (this *EmptyStream) EndFlush()

EndFlush 結束記錄, 並把記錄加回到 Retain 中, 然後儲存記錄

func (*EmptyStream) Error

func (this *EmptyStream) Error(_ error) Stream

Error 記錄錯誤

func (*EmptyStream) KV

func (this *EmptyStream) KV(_ string, _ any) Stream

KV 記錄索引與數值

func (*EmptyStream) Message

func (this *EmptyStream) Message(_ string, _ ...any) Stream

Message 記錄訊息

type Logger

type Logger interface {
	// Initialize 初始化處理
	Initialize() error

	// Finalize 結束處理
	Finalize()

	// Get 取得儲存器
	Get() Retain
}

Logger 日誌介面, 實作時需要注意會在多執行緒環境下運作

type Logmgr

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

Logmgr 日誌管理器, 用於執行管理日誌相關功能; 使用前需要執行 Add 新增日誌; 使用完畢需要執行 Finalize 結束所有日誌

新增日誌時, 有以下預設日誌物件可用

  • EmptyLogger: 空日誌, 不會輸出任何訊息
  • ZapLogger: uber實現的高效能日誌功能

如果使用者想要自訂日誌, 需要實現 Logger 介面與 Stream 介面

Logmgr 提供以下日誌函式: Debug, Info, Warn, Error

func NewLogmgr

func NewLogmgr() *Logmgr

NewLogmgr 建立日誌管理器

func (*Logmgr) Add

func (this *Logmgr) Add(name string, logger Logger) error

Add 新增日誌物件

func (*Logmgr) Finalize

func (this *Logmgr) Finalize()

Finalize 結束處理

func (*Logmgr) Get

func (this *Logmgr) Get(name string) Logger

Get 取得日誌物件

type Retain

type Retain interface {
	// Clear 清空內部 Stream 列表
	Clear() Retain

	// Flush 儲存並清空內部 Stream 列表
	Flush() Retain

	// Debug 記錄除錯訊息, 用於記錄除錯訊息
	Debug(label string) Stream

	// Info 記錄一般訊息, 用於記錄一般訊息
	Info(label string) Stream

	// Warn 記錄警告訊息, 用於記錄邏輯錯誤
	Warn(label string) Stream

	// Error 記錄錯誤訊息, 用於記錄嚴重錯誤
	Error(label string) Stream
}

Retain 儲存介面, 實作時需要注意會在多執行緒環境下運作

type Stream

type Stream interface {
	// Message 記錄訊息
	Message(format string, a ...any) Stream

	// KV 記錄索引與數值
	KV(key string, value any) Stream

	// Caller 記錄呼叫位置
	Caller(skip int) Stream

	// Error 記錄錯誤
	Error(err error) Stream

	// End 結束記錄, 並把記錄加回到 Retain 中
	End() Retain

	// EndFlush 結束記錄, 並把記錄加回到 Retain 中, 然後儲存記錄
	EndFlush()
}

Stream 記錄介面, 實作時需要注意會在多執行緒環境下運作

type ZapLogger

type ZapLogger struct {
	Name       string `yaml:"name"`       // 日誌名稱, 會被用到日誌檔案名稱上
	Path       string `yaml:"path"`       // 日誌路徑, 指定日誌檔案的位置
	Json       bool   `yaml:"json"`       // 是否使用json格式日誌, 建議正式環境使用json格式日誌
	Console    bool   `yaml:"console"`    // 是否輸出到控制台
	File       bool   `yaml:"file"`       // 是否輸出到日誌檔案
	Level      string `yaml:"level"`      // 輸出日誌等級, 當記錄的日誌等級超過此值時才會儲存到檔案中; 有以下選擇: LevelDebug, LevelInfo, LevelWarn, LevelError
	TimeLayout string `yaml:"timeLayout"` // 時間布局字串
	TimeZone   string `yaml:"timeZone"`   // 時區字串, 採用與 time.LoadLocation 一樣的方式, 預設是UTC+0
	MaxSize    int    `yaml:"maxSize"`    // 日誌大小(MB), 當日誌檔案超過此大小時就會建立新檔案, 預設是100MB
	MaxTime    int    `yaml:"maxTime"`    // 日誌保留時間(日), 當日誌檔案儲存超過此時間時會被刪除, 預設不會刪除檔案
	MaxBackups int    `yaml:"maxBackups"` // 日誌保留數量, 當日誌檔案數量超過此數量時會刪除舊檔案, 預設不會刪除檔案
	Compress   bool   `yaml:"compress"`   // 是否壓縮日誌檔案, 預設不會壓縮
	Jsonify    bool   `yaml:"jsonify"`    // 物件記錄時是否以json字串記錄, 預設為關閉
	// contains filtered or unexported fields
}

ZapLogger zap日誌, uber實現的高效能日誌功能; 使用前必須填寫好 ZapLogger 中的公開成員, 可以選擇從yaml格式的配置檔案來填寫 ZapLogger 結構; 使用時要注意由於 ZapRetain 並非執行緒安全, 因此使用時不可以把 ZapRetain 儲存下來使用

func (*ZapLogger) Finalize

func (this *ZapLogger) Finalize()

Finalize 結束處理

func (*ZapLogger) Get

func (this *ZapLogger) Get() Retain

Get 取得儲存器

func (*ZapLogger) Initialize

func (this *ZapLogger) Initialize() error

Initialize 初始化處理

type ZapRetain

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

ZapRetain zap儲存器

func (*ZapRetain) Clear

func (this *ZapRetain) Clear() Retain

Clear 清空內部 Stream 列表

func (*ZapRetain) Debug

func (this *ZapRetain) Debug(label string) Stream

Debug 記錄除錯訊息, 用於記錄除錯訊息

func (*ZapRetain) Error

func (this *ZapRetain) Error(label string) Stream

Error 記錄錯誤訊息, 用於記錄嚴重錯誤

func (*ZapRetain) Flush

func (this *ZapRetain) Flush() Retain

Flush 儲存並清空內部 Stream 列表

func (*ZapRetain) Info

func (this *ZapRetain) Info(label string) Stream

Info 記錄一般訊息, 用於記錄一般訊息

func (*ZapRetain) Warn

func (this *ZapRetain) Warn(label string) Stream

Warn 記錄警告訊息, 用於記錄邏輯錯誤

type ZapStream

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

ZapStream zap記錄

func (*ZapStream) Caller

func (this *ZapStream) Caller(skip int) Stream

Caller 記錄呼叫位置

func (*ZapStream) End

func (this *ZapStream) End() Retain

End 結束記錄

func (*ZapStream) EndFlush

func (this *ZapStream) EndFlush()

EndFlush 結束記錄, 並把記錄加回到 Retain 中, 然後儲存記錄

func (*ZapStream) Error

func (this *ZapStream) Error(err error) Stream

Error 記錄錯誤

func (*ZapStream) KV

func (this *ZapStream) KV(key string, value any) Stream

KV 記錄索引與數值

func (*ZapStream) Message

func (this *ZapStream) Message(format string, a ...any) Stream

Message 記錄訊息

Jump to

Keyboard shortcuts

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