// ------------------------------------------------------------------------ // Project atila // Active Thing (activething.com) git.activething.com/go // // File name entry.go // Created by DEV // Modified 22/02/2024 // // Copyright 2024 activething.com // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ------------------------------------------------------------------------ package logs import ( "activething.com/go/gogo/core/errs" "activething.com/go/gogo/core/slices" "time" ) type ( Entry struct { Logger Logger Id uint64 Scope string Scopes [][]byte Level Level Message string Date time.Time Err error Stack errs.StackTrace Data any excludes slices.Strings } EntryFnc func(*Entry) ) func NewEntry (logger Logger, level Level, message string, err error, options ...EntryFnc) *Entry { en := G.entryPool.Get().init(logger, level, message, err) for _, o := range options { o(en) } return en } func (e *Entry) init (logger Logger, level Level, message string, err error) *Entry { e.Logger = logger e.Level = level e.Message = message e.Err = err return e } func (e *Entry) reset ()*Entry { e.Logger = nil e.Stack = nil e.Data = nil e.Message = "" e.Scopes = e.Scopes [:0] e.excludes= e.excludes[:0] return e } func (e *Entry) HasExclude (exclude string) bool { return e.excludes.Has(exclude) } func (e *Entry) Clone () *Entry { c := G.entryPool.Get() c.Message = e.Message c.Level = e.Level c.Err = e.Err c.Logger = e.Logger c.Scope = e.Scope c.Scopes = append(c.Scopes[:0],e.Scopes...) c.excludes = append(c.excludes[:0],e.excludes ...) c.Stack = append(c.Stack[:0],e.Stack ...) return c }