initial import

This commit is contained in:
2026-01-23 14:41:49 +02:00
commit 772657d9be
37 changed files with 11382 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
package logger
import (
"bytes"
"fmt"
"io"
"os"
"sync"
"time"
)
var (
mtx sync.Mutex
output io.Writer = os.Stderr
)
type Logger struct {
subject string
}
func NewLogger(subj string) *Logger {
return &Logger{
subject: subj,
}
}
func SetWriter(newOut io.Writer) {
mtx.Lock()
output = newOut
mtx.Unlock()
}
func (logg *Logger) Debugf(message string, args ...any) {
logg.printf("debug", message, args...)
}
func (logg *Logger) Infof(message string, args ...any) {
logg.printf("info", message, args...)
}
func (logg *Logger) Warningf(message string, args ...any) {
logg.printf("warning", message, args...)
}
func (logg *Logger) Errorf(message string, args ...any) {
logg.printf("error", message, args...)
}
func (logg *Logger) printf(level, message string, args ...any) {
timestamp := time.Now().Format(time.RFC3339)
buffer := bytes.NewBuffer([]byte{})
fmt.Fprintf(buffer, "%s %s.%s: ", timestamp, logg.subject, level)
fmt.Fprintf(buffer, message, args...)
fmt.Fprintf(buffer, "\n")
mtx.Lock()
fmt.Fprint(output, buffer.String())
mtx.Unlock()
}
+30
View File
@@ -0,0 +1,30 @@
package logger
import (
"io/ioutil"
"testing"
)
func TestLogger(t *testing.T) {
logg := NewLogger("test")
logg.Debugf("foo: %s", "bar")
}
func BenchmarkLoggerL(b *testing.B) {
SetWriter(ioutil.Discard)
logg := NewLogger("test")
for i := 0; i < b.N; i++ {
logg.Debugf("foo: %s", "bar")
}
}
func BenchmarkLoggerP(b *testing.B) {
SetWriter(ioutil.Discard)
logg := NewLogger("test")
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
logg.Debugf("foo: %s", "bar")
}
})
}