You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.0 KiB

// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name filter.go
// Created by DEV
// Modified 23/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/sapis/tokens"
type (
Filter struct {
name string
active bool
applyFn FilterFnc
}
FilterFnc func (*Entry) bool
)
func NewFilter (name string, filterFn FilterFnc) *Filter {
if filterFn == nil {
filterFn = filterAlwaysTrue
}
return &Filter{
name : name,
active : true,
applyFn : filterFn,
}
}
func NewFilterLevel (level Level) *Filter {
l := level
return NewFilter(level.String(),func(e *Entry) bool {
return e.Level.Has(l) })
}
func NewFilterScope (scope string) *Filter {
tk := tokens.NewTopic(G.tokenizer,[]byte(scope),tokens.TokenKindAll)
if tk.Kind().HasInvalid() {
return nil
}
return NewFilter(scope,func(e *Entry) bool {
return tk.Match(e.Scopes) })
}
func (f Filter) Name () string {
return f.name }
func (f Filter) Active () bool {
return f.active }
func (f Filter) SetActive (active bool) {
f.active = active }
func (f Filter) Apply (e *Entry) bool {
return f.applyFn(e) }
func filterAlwaysTrue(_ *Entry) bool {
return true }

Powered by TurnKey Linux.