zlogger

개요[ | ]

zlogger
package zlogger

import (
	"fmt"
	"time"

	"github.com/go-logr/logr"
)

type zlogger struct {
	name   string
	values []interface{}
}

func New() logr.Logger {
	return logr.New(&zlogger{})
}

func formatKeyValue(keysAndValues ...interface{}) string {
	if len(keysAndValues)%2 != 0 {
		keysAndValues = append(keysAndValues, "(MISSING)")
	}
	formatted := ""
	for i := 0; i < len(keysAndValues); i += 2 {
		formatted += fmt.Sprintf(" %v=%v", keysAndValues[i], keysAndValues[i+1])
	}
	return formatted
}

func (z *zlogger) Init(info logr.RuntimeInfo) {
	// Initialize if required
}

func (z *zlogger) Enabled(level int) bool {
	return true
}

func (z *zlogger) Info(level int, msg string, keysAndValues ...interface{}) {
	fmt.Printf("%s\tINFO  %s\t%s\t%s\n", time.Now().UTC().Format(time.RFC3339), z.name, msg, formatKeyValue(append(z.values, keysAndValues...)...))
}

func (z *zlogger) Error(err error, msg string, keysAndValues ...interface{}) {
	fmt.Printf("%s\tERROR %s\t%s\t%s\n", time.Now().UTC().Format(time.RFC3339), z.name, msg, formatKeyValue(append(z.values, append(keysAndValues, "err", err)...)...))
}

func (z *zlogger) WithValues(keysAndValues ...interface{}) logr.LogSink {
	newLogger := *z
	newLogger.values = append(newLogger.values, keysAndValues...)
	return &newLogger
}

func (z *zlogger) WithName(name string) logr.LogSink {
	newLogger := *z
	newLogger.name = name
	return &newLogger
}
package main

import (
	"errors"
	"hello/zlogger"
)

func main() {
	logger := zlogger.New()
	logger.Info("Starting application...", "version", "v1.2.3")
	logger.Info("Low memory warning...", "memery", "100Mi")
	logger.Error(errors.New("unhandled exception"), "Unhandled exception occurred.", "key1", "value1", "key2", 123, "key3", 45.67)
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}