Files
stack/infra/traefik/plugins/src/github.com/packruler/rewrite-body/logger/logger.go
kert 8bd649d9ab feat: skinny packages, tree reorg, cloud abstraction (refs #182–#201)
P23 — Skinny Packages:
- Break conf→bib circular dependency with lazy guarded import
- Extract aco.table.base → conf.table_base (shared foundation)
- Add try/except ImportError guards on all cross-module imports
- Define per-module optional-dependencies in pyproject.toml
- Slim base deps to just pydantic; all heavy deps in optional groups
- Add gen_config.py --check validation for module/dep sync
- Add skinny-install CI matrix job (tests each extra in isolation)

P24 — Tree Reorganization:
- Move service configs to infra/ (traefik, coredns, grafana, etc.)
- Consolidate Dockerfiles under infra/images/
- Move styles/ → assets/css/ + assets/icons/ + assets/nature.py
- Update compose.yml, stack.toml, gen_config.py, all backend emitters
- Update bootstrap scripts and install_certs.sh

P25 — Cloud Provider Abstraction:
- Add cloud/ directory with self-hosted, aws, gcp, azure stubs
- Add cloud contexts (aws, gcp, azure) to stack.toml
- Add conf/storage.py — get_filesystem() dispatches per context
- Add aws, gcp, azure optional dependency groups
- Document service mapping for each provider

All 11955 tests pass. Zero functionality lost.
2026-03-24 15:00:26 -04:00

122 lines
3.6 KiB
Go

// Package logger a package for handling writing content to logs.
package logger
import (
"bytes"
"fmt"
"log"
"os"
)
// LogLevel type definition of supported log levels.
type LogLevel int8
const (
// Trace level of logs.
Trace LogLevel = iota - 2
// Debug level of logs.
Debug
// Info level of logs.
Info
// Warning level of logs.
Warning
// Error level of logs.
Error
)
// LogWriter the struct used for writing logs.
type LogWriter struct {
level LogLevel
loggers map[LogLevel]*log.Logger
}
// CreateLogger create the LogWriter struct with required content.
func CreateLogger(level LogLevel) *LogWriter {
loggers := make(map[LogLevel]*log.Logger, Error-1)
loggers[Trace] = log.New(os.Stdout, "Rewrite-Body | TRACE", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Debug] = log.New(os.Stdout, "Rewrite-Body | DEBUG", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Info] = log.New(os.Stdout, "Rewrite-Body | INFO", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Warning] = log.New(os.Stdout, "Rewrite-Body | WARNING", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Error] = log.New(os.Stderr, "Rewrite-Body | ERROR", log.Ldate|log.Ltime|log.Lshortfile)
return &LogWriter{
level: level,
loggers: loggers,
}
}
func createLoggerWithBuffer(level LogLevel, buffer *bytes.Buffer) *LogWriter {
loggers := make(map[LogLevel]*log.Logger, Error-1)
loggers[Trace] = log.New(buffer, "Rewrite-Body | TRACE", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Debug] = log.New(buffer, "Rewrite-Body | DEBUG", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Info] = log.New(buffer, "Rewrite-Body | INFO", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Warning] = log.New(buffer, "Rewrite-Body | WARNING", log.Ldate|log.Ltime|log.Lshortfile)
loggers[Error] = log.New(buffer, "Rewrite-Body | ERROR", log.Ldate|log.Ltime|log.Lshortfile)
return &LogWriter{
level: level,
loggers: loggers,
}
}
func (logger *LogWriter) writeLog(level LogLevel, message string) {
if level < logger.level {
return
}
output := logger.loggers[level]
output.Print(message)
}
// LogTrace write Trace level logs.
func (logger *LogWriter) LogTrace(message string) {
logger.writeLog(Trace, message)
}
// LogDebug write Debug level logs.
func (logger *LogWriter) LogDebug(message string) {
logger.writeLog(Debug, message)
}
// LogInfo write Info level logs.
func (logger *LogWriter) LogInfo(message string) {
logger.writeLog(Info, message)
}
// LogWarning write Warning level logs.
func (logger *LogWriter) LogWarning(message string) {
logger.writeLog(Warning, message)
}
// LogError write Error level logs.
func (logger *LogWriter) LogError(message string) {
logger.writeLog(Error, message)
}
// LogTracef write Trace level logs with formatting similar to fmt.Sprintf.
func (logger *LogWriter) LogTracef(format string, a ...interface{}) {
logger.writeLog(Trace, fmt.Sprintf(format, a...))
}
// LogDebugf write Debug level logs with formatting similar to fmt.Sprintf.
func (logger *LogWriter) LogDebugf(format string, a ...interface{}) {
logger.writeLog(Debug, fmt.Sprintf(format, a...))
}
// LogInfof write Info level logs with formatting similar to fmt.Sprintf.
func (logger *LogWriter) LogInfof(format string, a ...interface{}) {
logger.writeLog(Info, fmt.Sprintf(format, a...))
}
// LogWarningf write Warning level logs with formatting similar to fmt.Sprintf.
func (logger *LogWriter) LogWarningf(format string, a ...interface{}) {
logger.writeLog(Warning, fmt.Sprintf(format, a...))
}
// LogErrorf write Error level logs with formatting similar to fmt.Sprintf.
func (logger *LogWriter) LogErrorf(format string, a ...interface{}) {
logger.writeLog(Error, fmt.Sprintf(format, a...))
}