Documentation
¶
Overview ¶
Package logrotate 提供以 phuslu/log 為基礎、可在執行中動態增減輸出目標的 log.Writer。讀路徑無鎖,寫路徑 copy-on-write。
Index ¶
- func AddJSONUDP(addr string) error
- func AddTextUDP(addr string) error
- func Close() error
- func Debug() *log.Entry
- func Error() *log.Entry
- func Fatal() *log.Entry
- func Info() *log.Entry
- func Init(c Config)
- func Logger() *log.Logger
- func Panic() *log.Entry
- func Remove(key string)
- func SetOnError(fn func(key string, err error))
- func Targets() []string
- func Trace() *log.Entry
- func Warn() *log.Entry
- type Config
- type DynamicWriter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddJSONUDP ¶
func AddTextUDP ¶
func Init ¶
func Init(c Config)
Init 以自訂設定重建預設 logger,請在開始寫 log 之前呼叫。 字串/數值欄位若為零值會自動套用 DefaultConfig() 的對應預設。
func SetOnError ¶
SetOnError 設定預設 DynamicWriter 的錯誤觀測 callback。
Types ¶
type Config ¶
type Config struct {
Filename string // 輸出檔名
MaxSize int64 // 單檔最大位元組,超過即輪替
MaxBackups int // 保留的舊檔數量
LocalTime bool // 輪替檔名是否用本地時間
Level log.Level // 最低輸出等級
// EnsureFolder 為 true 時,寫檔前自動建出 Filename 的上層目錄(0755)。
EnsureFolder bool
// ChannelSize 是 UDP 非同步緩衝的長度。
ChannelSize uint
// DiscardOnFull 為 true 時緩衝滿就丟棄新 entry(永不阻塞);false 則背壓等待。
DiscardOnFull bool
}
Config 設定預設 logger 的寫檔行為、等級,以及 UDP 非同步緩衝。
type DynamicWriter ¶
type DynamicWriter struct {
// OnError 在某個 target 寫入失敗時被呼叫(nil = 靜默)。會在寫 log 的
// goroutine 上同步呼叫,不要在裡面再寫同一個 logger。
OnError func(key string, err error)
// contains filtered or unexported fields
}
DynamicWriter 是可在執行中動態增減目標的 log.Writer。
- 讀路徑(WriteEntry)無鎖,用 atomic.Pointer 載入目標快照。
- 寫路徑(Add/Remove)用 copy-on-write,mu 只序列化彼此,不擋讀。
- 所有 UDP target 共用一個 send-only socket。
- 單一 target 寫失敗不中斷其他 target,錯誤可選擇性丟給 OnError。
func NewDynamicWriter ¶
func NewDynamicWriter() *DynamicWriter
func (*DynamicWriter) AddJSONUDP ¶
func (d *DynamicWriter) AddJSONUDP(addr string) error
AddJSONUDP 新增一個輸出 JSON 的 UDP target。
func (*DynamicWriter) AddTextUDP ¶
func (d *DynamicWriter) AddTextUDP(addr string) error
AddTextUDP 新增一個輸出純文字的 UDP target,格式與檔案一致(textFormatter)。
func (*DynamicWriter) Targets ¶
func (d *DynamicWriter) Targets() []string
Targets 回傳目前的 target keys(快照)。
func (*DynamicWriter) WriteEntry ¶
func (d *DynamicWriter) WriteEntry(e *log.Entry) (n int, err error)
WriteEntry 實作 log.Writer,無鎖讀取快照後 fan-out。
Click to show internal directories.
Click to hide internal directories.