inspektor-gadget
191 строка · 4.5 Кб
1// Copyright 2022-2023 The Inspektor Gadget authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/*
16Package logger provides a logger interface that is available to gadgets
17and runtimes.
18*/
19package logger
20
21import log "github.com/sirupsen/logrus"
22
23type Level = log.Level
24
25// we use the log levels from logrus here
26const (
27PanicLevel = log.PanicLevel
28FatalLevel = log.FatalLevel
29ErrorLevel = log.ErrorLevel
30WarnLevel = log.WarnLevel
31InfoLevel = log.InfoLevel
32DebugLevel = log.DebugLevel
33TraceLevel = log.TraceLevel
34)
35
36type DedicatedLogger interface {
37Panic(params ...any)
38Panicf(fmt string, params ...any)
39Fatal(params ...any)
40Fatalf(fmt string, params ...any)
41Error(params ...any)
42Errorf(fmt string, params ...any)
43Warn(params ...any)
44Warnf(fmt string, params ...any)
45Info(params ...any)
46Infof(fmt string, params ...any)
47Debug(params ...any)
48Debugf(fmt string, params ...any)
49Trace(params ...any)
50Tracef(fmt string, params ...any)
51}
52
53type GenericLogger interface {
54Log(severity Level, params ...any)
55Logf(severity Level, format string, params ...any)
56}
57
58type GenericLoggerWithLevelSetter interface {
59GenericLogger
60LevelGetterSetter
61}
62
63type DedicatedLoggerWithLevelSetter interface {
64DedicatedLogger
65LevelGetterSetter
66}
67
68type LevelGetterSetter interface {
69SetLevel(Level)
70GetLevel() Level
71}
72
73type Logger interface {
74DedicatedLogger
75GenericLogger
76LevelGetterSetter
77}
78
79func NewFromGenericLogger(logger GenericLoggerWithLevelSetter) Logger {
80return &StandardDedicatedLogger{GenericLoggerWithLevelSetter: logger}
81}
82
83func NewFromDedicatedLogger(logger DedicatedLoggerWithLevelSetter) Logger {
84return &StandardGenericLogger{DedicatedLoggerWithLevelSetter: logger}
85}
86
87type StandardDedicatedLogger struct {
88GenericLoggerWithLevelSetter
89}
90
91func (s *StandardDedicatedLogger) Panic(params ...any) {
92s.Log(PanicLevel, params...)
93}
94
95func (s *StandardDedicatedLogger) Panicf(fmt string, params ...any) {
96s.Logf(PanicLevel, fmt, params...)
97}
98
99func (s *StandardDedicatedLogger) Fatal(params ...any) {
100s.Log(FatalLevel, params...)
101}
102
103func (s *StandardDedicatedLogger) Fatalf(fmt string, params ...any) {
104s.Logf(FatalLevel, fmt, params...)
105}
106
107func (s *StandardDedicatedLogger) Error(params ...any) {
108s.Log(ErrorLevel, params...)
109}
110
111func (s *StandardDedicatedLogger) Errorf(fmt string, params ...any) {
112s.Logf(ErrorLevel, fmt, params...)
113}
114
115func (s *StandardDedicatedLogger) Warn(params ...any) {
116s.Log(WarnLevel, params...)
117}
118
119func (s *StandardDedicatedLogger) Warnf(fmt string, params ...any) {
120s.Logf(WarnLevel, fmt, params...)
121}
122
123func (s *StandardDedicatedLogger) Info(params ...any) {
124s.Log(InfoLevel, params...)
125}
126
127func (s *StandardDedicatedLogger) Infof(fmt string, params ...any) {
128s.Logf(InfoLevel, fmt, params...)
129}
130
131func (s *StandardDedicatedLogger) Debug(params ...any) {
132s.Log(DebugLevel, params...)
133}
134
135func (s *StandardDedicatedLogger) Debugf(fmt string, params ...any) {
136s.Logf(DebugLevel, fmt, params...)
137}
138
139func (s *StandardDedicatedLogger) Trace(params ...any) {
140s.Log(TraceLevel, params...)
141}
142
143func (s *StandardDedicatedLogger) Tracef(fmt string, params ...any) {
144s.Logf(TraceLevel, fmt, params...)
145}
146
147type StandardGenericLogger struct {
148DedicatedLoggerWithLevelSetter
149}
150
151func (s *StandardGenericLogger) Log(severity Level, params ...any) {
152switch severity {
153case PanicLevel:
154s.Panic(params...)
155case FatalLevel:
156s.Fatal(params...)
157case ErrorLevel:
158s.Error(params...)
159case WarnLevel:
160s.Warn(params...)
161case InfoLevel:
162s.Info(params...)
163case DebugLevel:
164s.Debug(params...)
165case TraceLevel:
166s.Trace(params...)
167}
168}
169
170func (s *StandardGenericLogger) Logf(severity Level, format string, params ...any) {
171switch severity {
172case PanicLevel:
173s.Panicf(format, params...)
174case FatalLevel:
175s.Fatalf(format, params...)
176case ErrorLevel:
177s.Errorf(format, params...)
178case WarnLevel:
179s.Warnf(format, params...)
180case InfoLevel:
181s.Infof(format, params...)
182case DebugLevel:
183s.Debugf(format, params...)
184case TraceLevel:
185s.Tracef(format, params...)
186}
187}
188
189func DefaultLogger() Logger {
190return log.StandardLogger()
191}
192