Global Repos / Workflow - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - UPDATE workflow: split old workflow into multiple files - UPDATE .gitignore: added cluster.old.tar.gz and build artifacts - UPDATE .golangci.yml: enhanced linter rules and disabled deprecated linters [archive] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - FIX extract: recursive decompression for nested archives (e.g., .tar.gz handling) - FIX extract: ZIP archive support now properly uses ReaderAt interface with seek reset - ADD extract: proper symlink and hard link handling in archives - UPDATE tar/writer: improved error handling and file mode preservation - UPDATE zip/writer: enhanced validation and error messages - UPDATE compress/interface: added support for additional compression formats - UPDATE helper/compressor: fixed typo in error handling [artifact] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE artifact: improved error handling and context management - UPDATE client/interface: enhanced API with better type safety and context propagation - UPDATE client/model: refactored for better maintainability - UPDATE github: removed unused error codes, improved model validation - UPDATE gitlab: enhanced API pagination and error handling - UPDATE jfrog: improved artifactory API compatibility - UPDATE s3aws: enhanced S3 bucket operations and error messages [atomic] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE cast: improved type conversion with better error handling - UPDATE interface: enhanced atomic operations with generics support - UPDATE synmap: fixed race conditions in concurrent access patterns - UPDATE value: improved atomic value operations with better memory ordering [aws] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bucket: enhanced ACL and CORS configuration with validation - UPDATE configAws/models: improved credential handling and region configuration - UPDATE configCustom/interface: added support for custom endpoints - UPDATE http/request: improved retry logic and timeout handling - UPDATE interface: enhanced AWS client with context propagation - UPDATE model: refactored for AWS SDK v2 compatibility - UPDATE multipart/interface: improved chunk handling for large uploads - UPDATE pusher: optimized hash calculation and upload progress tracking - UPDATE resolver: enhanced endpoint resolution with custom DNS - DELETE test files: removed bucket_test.go, group_test.go, object_test.go, policy_test.go, role_test.go, user_test.go [cache] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD context: context-aware cache lifecycle management - UPDATE interface: complete rewrite with Go generics for type-safe key-value operations - ADD item package: generic cache item with expiration tracking (interface and model) - UPDATE model: refactored to use generics (Cache[K comparable, V any]) - REFACTOR: split item.go into modelAny.go for better code organization [certificates] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE auth/encode: improved PEM encoding with better error messages - UPDATE auth/interface: enhanced authentication certificate handling - UPDATE ca: improved CA certificate generation and validation - UPDATE certs: enhanced certificate configuration with SAN support - UPDATE cipher: improved cipher suite selection and validation - UPDATE curves: enhanced elliptic curve handling with additional curves - ADD deprecated.go: marked deprecated TLS versions and cipher suites - UPDATE interface: enhanced certificate interface with context support - UPDATE model: improved certificate model with better validation - UPDATE rootca: enhanced root CA pool management - UPDATE tlsversion: added TLS 1.3 support with proper validation - UPDATE tools: improved certificate utility functions [cobra] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE completion: improved shell completion generation (bash, zsh, fish, powershell) - UPDATE configure: enhanced configuration file handling - UPDATE printError: improved error formatting with color support - UPDATE interface: enhanced cobra interface with context support - UPDATE model: improved cobra model with better validation [config] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE components: improved component lifecycle management - UPDATE const/const: improved constant definitions - UPDATE context: enhanced context handling with better propagation - UPDATE errors: improved error definitions - UPDATE events: enhanced event management - UPDATE manage: improved configuration management with validation - UPDATE model: refactored config model - UPDATE shell: enhanced shell integration for interactive configuration - UPDATE types: improved component and componentList types [console] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD buff.go: BuffPrintf function for colored output to io.Writer (moved from ioutils/multiplexer) - DELETE color.go: removed legacy color file (consolidated functionality) - UPDATE error: improved error definitions with better messages - ADD interface: console interface for abstraction - ADD model: console model for state management - UPDATE padding: enhanced string padding with Unicode support - UPDATE prompt: improved interactive prompt handling [context] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - DELETE config.go: removed deprecated configuration (replaced by Config[T] interface) - UPDATE context: improved context handling with better cancellation support - UPDATE gin/interface: enhanced Gin context integration with type safety - ADD helper: context helper functions for common operations - ADD interface: generic Config[T comparable] interface for type-safe context storage - ADD map: MapManage[T] interface for concurrent-safe map operations - ADD model: thread-safe context model implementation with sync.Map [database] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE gorm/config: improved database configuration - UPDATE gorm/driver: enhanced database driver with better connection pooling - UPDATE gorm/driver_darwin: macOS-specific database optimizations - UPDATE gorm/interface: improved GORM interface with context support - UPDATE gorm/model: refactored model for better maintainability - UPDATE gorm/monitor: enhanced monitoring for database connections - UPDATE kvtypes: improved types for key-value store (compare, driver, item, table) [duration] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE big: enhanced big.Duration for large time spans with arithmetic operations - UPDATE encode: improved marshaling for JSON, YAML, TOML, Text, CBOR - UPDATE format: enhanced human-readable formatting (ns, μs, ms, s, m, h, d, w) - UPDATE interface: improved duration interface with arithmetic methods - UPDATE model: refactored Duration type - UPDATE operation: enhanced arithmetic operations (Add, Sub, Mul, Div) - UPDATE parse: improved parsing with multiple format support - UPDATE truncate: enhanced truncation for rounding durations [encoding] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE aes: improved AES encryption with reader/writer interfaces - UPDATE hexa: enhanced hexadecimal encoding with better error handling - UPDATE mux: improved multiplexer/demultiplexer for stream handling - UPDATE randRead: enhanced random data generation - UPDATE sha256 package: SHA-256 hashing with reader/writer interfaces [errors] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD pool package: thread-safe error pool for collecting multiple errors with concurrent access - UPDATE code: improved error code definition and lookup - UPDATE errors: enhanced error creation with better stack trace - UPDATE interface: improved error interface with more methods - UPDATE mode: enhanced error mode handling (production vs development) - UPDATE return: improved error return handling with context - UPDATE trace: enhanced error tracing with file and line information [file] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bandwidth: improved bandwidth tracking with concurrency tests - UPDATE perm: enhanced file permission handling with Unix/Windows support - UPDATE perm/encode: improved marshaling for JSON, YAML, TOML - UPDATE perm/format: enhanced permission formatting (e.g., "rwxr-xr-x") - UPDATE perm/parse: improved parsing of permission strings and octal values - UPDATE progress: enhanced progress tracking for file I/O operations - UPDATE progress/io*: improved reader, writer, seeker, closer interfaces with progress callbacks [ftpclient] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE config: improved FTP configuration with TLS support - UPDATE errors: enhanced error definitions - UPDATE interface: improved FTP client interface - UPDATE model: refactored FTP client model [httpcli] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE cli: improved HTTP client with retry logic and timeout handling - UPDATE dns-mapper: enhanced DNS mapping for custom resolution - UPDATE dns-mapper/config: improved DNS mapper configuration - UPDATE dns-mapper/errors: enhanced error handling - UPDATE dns-mapper/interface: improved DNS mapper interface - UPDATE dns-mapper/transport: enhanced HTTP transport with DNS override - UPDATE errors: improved error definitions - UPDATE options: enhanced client options with context support [httpserver] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE config: improved server configuration with TLS and middleware support - UPDATE handler: enhanced request handler with better error handling - UPDATE interface: improved server interface with context support and monitoring integration - UPDATE model: refactored server model with better validation - UPDATE monitor: enhanced monitoring integration with status tracking - UPDATE pool: improved server pool management (config, interface, list, model) - UPDATE run: enhanced server runtime with graceful shutdown - UPDATE server: improved core server implementation with better lifecycle - ADD testhelpers/certs.go: certificate generation utilities for testing - UPDATE types: improved const, fields, and handler types [ioutils] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bufferReadCloser: improved buffered reader/writer with closer - UPDATE fileDescriptor: enhanced file descriptor limit management (platform-specific for Linux/macOS/Windows) - UPDATE ioprogress: improved progress tracking for I/O operations - UPDATE iowrapper: enhanced I/O wrapper with custom interfaces - UPDATE mapCloser: improved map of closers for resource management - UPDATE maxstdio: enhanced C implementation for max stdio file descriptor retrieval - DELETE multiplexer/model.go: removed legacy multiplexer (functionality moved to console/buff.go and retro/) - UPDATE nopwritecloser: improved no-op write closer - UPDATE tools: enhanced I/O utility functions [ldap] - UPDATE ldap: improved LDAP client with better connection handling and search operations [logger] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE config: improved default values, file options, and syslog configuration - UPDATE entry/interface: enhanced log entry with context support - UPDATE fields: improved field handling with JSON cloning - UPDATE gorm/interface: enhanced GORM logger with trace ID support - UPDATE hashicorp/interface: improved HashiCorp logger integration - FIX hookfile/system: use os.OpenRoot for secure file operations (prevents path traversal) - FIX hookfile/system: fixed import path from libsrv "golib/server" to "golib/runner" - ADD hookfile: IsRunning() method to track file hook state - UPDATE hookstderr/interface: enhanced stderr hook with better buffering - UPDATE hookstdout/interface: enhanced stdout hook with better buffering - UPDATE hooksyslog: improved syslog integration with channel and priority handling - ADD hookwriter package: generic io.Writer hook for custom output destinations - UPDATE interface: enhanced logger interface with context propagation - UPDATE level: improved log level handling and comparison - UPDATE log: enhanced logging with better formatting - UPDATE manage: improved logger lifecycle management - UPDATE model: refactored logger model for better maintainability [mail] - UPDATE sender: improved mail sender with better MIME handling - UPDATE interface: enhanced interface with monitoring support - UPDATE monitor: added monitoring integration for mail operations [monitor] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD status package: new subpackage for status management with Status type (KO, Warn, OK) - ADD status/encode: marshaling support for JSON, YAML, TOML, Text, CBOR - ADD status/format: human-readable status formatting - ADD status/interface: Status type with Parse and String methods - UPDATE encode: improved encoding with better error handling - UPDATE error: enhanced error definitions - UPDATE info: improved system info collection (CPU, mem, disk, network) - UPDATE interface: enhanced monitor interface with status support and better component integration - UPDATE metrics: improved metrics collection and export - UPDATE middleware: enhanced monitoring middleware for HTTP - UPDATE pool/interface: enhanced pool interface with better monitoring integration - UPDATE pool/metrics: improved metrics collection in pool - UPDATE pool/model: refactored pool model for better maintainability - UPDATE pool/pool: enhanced pool implementation with better lifecycle - UPDATE server: enhanced server monitoring with status tracking - UPDATE types/monitor: improved monitor type definitions [nats] - UPDATE client: improved NATS client with better subscription handling - UPDATE config: enhanced NATS configuration with cluster support - UPDATE monitor: added monitoring integration for NATS operations - UPDATE server: improved NATS server integration with monitoring [network] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bytes: improved byte size handling for network operations - UPDATE number: enhanced number utilities for network data - UPDATE protocol/encode: improved protocol encoding - ADD protocol/format: protocol formatting utilities - UPDATE protocol/interface: enhanced protocol interface - UPDATE protocol/model: refactored protocol model [password] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE password: improved password utilities with strength validation and secure generation [pidcontroller] - UPDATE interface: improved PID controller interface - UPDATE model: enhanced PID controller model with better tuning parameters [pprof] - UPDATE tools: improved pprof utilities for profiling integration [prometheus] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE bloom/bloom: improved bloom filter with better concurrency handling - UPDATE bloom/collection: enhanced bloom filter collection operations - UPDATE interface: enhanced prometheus interface with better type safety - UPDATE metrics/interface: enhanced metrics interface with better registration - UPDATE metrics/model: refactored metrics model for better maintainability - UPDATE model: refactored prometheus model with better validation - UPDATE pool: enhanced metric pool with concurrent access - UPDATE pool/interface: enhanced pool interface - UPDATE pool/model: refactored pool model - UPDATE route: improved routing for metric endpoints - UPDATE types: enhanced type definitions for metrics - UPDATE webmetrics: improved existing metrics (requestBody, requestIPTotal, requestLatency, requestSlow, requestTotal, requestURITotal, responseBody) - ADD webmetrics/activeConnections: gauge for tracking concurrent HTTP connections - ADD webmetrics/requestErrors: counter for HTTP request errors - ADD webmetrics/responseSizeByEndpoint: histogram for response size distribution by endpoint - ADD webmetrics/statusCodeTotal: counter for HTTP status codes [request] - UPDATE interface: enhanced request interface with better type safety - UPDATE model: refactored request model for better maintainability - UPDATE options: improved request options with better validation - UPDATE url: enhanced URL handling with better parsing [retro] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE encoding: improved encoding utilities with better format support - UPDATE format: enhanced formatting functions for retro compatibility - UPDATE model: refactored retro model with better validation - UPDATE utils: improved utility functions for version handling - UPDATE version: enhanced version utilities for retro compatibility [router] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE auth/interface: enhanced authentication interface with better validation - UPDATE auth/model: improved authentication model - UPDATE authheader/interface: enhanced authentication header interface - UPDATE default: improved default router configuration - UPDATE error: enhanced error definitions for router - UPDATE header/config: improved header configuration - UPDATE header/interface: enhanced header interface - UPDATE header/model: refactored header model - UPDATE interface: improved router interface with better type safety - UPDATE middleware: improved router middleware with better error handling - UPDATE model: refactored router model for better maintainability - UPDATE router: enhanced core router implementation - UPDATE tools: enhanced router utilities for route registration [runner] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE package: move package for lifecycle management of long-running services (moved from server/runner) - ADD interface: Runner interface with Start, Stop, Restart, IsRunning, and Uptime methods - ADD startStop package: service lifecycle with blocking start and graceful stop (interface, model, comprehensive tests) - ADD ticker package: periodic task execution at regular intervals (interface, model, comprehensive tests) - ADD tests: concurrency, construction, errors, lifecycle, and uptime tests for both startStop and ticker - ADD tools: RecoveryCaller for panic recovery in goroutines [semaphore] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - FIX bar/bar: Dec method now properly decrements (was calling Inc64, now calls Dec64 with negative value) - UPDATE bar: improved progress bar with better MPB integration - UPDATE bar/context: enhanced context handling for cancellation - UPDATE bar/interface: added methods for Total() and better progress tracking - UPDATE bar/model: improved model with atomic operations - UPDATE bar tests: enhanced bar_operations_test, edge_cases_test, integration_test, and semaphore_test - UPDATE context: enhanced context propagation - UPDATE interface: improved semaphore interface with weighted operations - UPDATE model: refactored model for better thread safety - UPDATE progress: enhanced progress tracking with multiple bars - UPDATE sem/interface: added IsRunning() method for state tracking - UPDATE sem/ulimit: improved ulimit handling for file descriptors - UPDATE sem/weighted: enhanced weighted semaphore operations - UPDATE types: improved type definitions for bar, progress, and semaphore [server] - REFACTOR: moved runner subpackage to root-level runner package - DELETE: empty package after moved runner subpackage [shell] - UPDATE goprompt: improved interactive prompt handling with better input validation [size] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD arithmetic.go: NEW file with arithmetic operations (Add, Sub, Mul, Div with overflow detection) - UPDATE encode: improved marshaling for JSON, YAML, TOML, Text, CBOR - UPDATE format: enhanced human-readable formatting (B, KB, MB, GB, TB, PB, EB) - UPDATE interface: added arithmetic methods (Mul, MulErr, Div, DivErr, Add, AddErr, Sub, SubErr) - UPDATE model: refactored Size type with better validation - UPDATE parse: improved parsing with unit detection (IEC and SI standards) [smtp] - UPDATE client: improved SMTP client with better error handling - UPDATE config: enhanced configuration with validation - UPDATE config/error: improved error definitions - UPDATE config/interface: enhanced interface with context support - UPDATE config/model: refactored model for better maintainability - UPDATE interface: improved SMTP interface with monitoring support - UPDATE monitor: added monitoring integration for SMTP operations - DELETE network/network.go: removed legacy network handling (consolidated into client) - UPDATE tlsmode/tls: enhanced TLS mode handling (None, TLS, StartTLS) - UPDATE types/interface: improved type interface [socket] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - ADD client/interface_darwin: macOS-specific socket client options - UPDATE client/interface_linux: platform-specific socket options for Linux - UPDATE client/interface_other: platform-specific socket options for other platforms - UPDATE client/tcp/error: improved TCP client error handling - UPDATE client/tcp/interface: enhanced TCP client interface - UPDATE client/tcp/model: improved TCP client model - UPDATE client/udp/error: improved UDP client error handling - UPDATE client/udp/interface: enhanced UDP client interface - UPDATE client/udp/model: improved UDP client model - UPDATE client/unix/error: improved Unix socket client error handling - UPDATE client/unix/ignore: enhanced ignore functionality - UPDATE client/unix/interface: enhanced Unix socket client interface - UPDATE client/unix/model: improved Unix socket client model - UPDATE client/unixgram/error: improved Unix datagram client error handling - UPDATE client/unixgram/ignore: enhanced ignore functionality - UPDATE client/unixgram/interface: enhanced Unix datagram client interface - UPDATE client/unixgram/model: improved Unix datagram client model - UPDATE config/client: improved client configuration - UPDATE config/server: improved server configuration - DELETE delim: moved legacy delimiter to I/O package - UPDATE interface: improved socket interface - UPDATE io: enhanced I/O operations - DELETE multi: moved legacy multi to I/O package - ADD server/interface_darwin: macOS-specific socket server options - UPDATE server/interface_linux: platform-specific server options for Linux - UPDATE server/interface_other: platform-specific server options for other platforms - UPDATE server/tcp/error: improved TCP server error handling - UPDATE server/tcp/interface: enhanced TCP server interface - UPDATE server/tcp/listener: improved TCP server listener - UPDATE server/tcp/model: improved TCP server model - UPDATE server/udp/error: improved UDP server error handling - UPDATE server/udp/interface: enhanced UDP server interface - UPDATE server/udp/listener: improved UDP server listener - UPDATE server/udp/model: improved UDP server model - UPDATE server/unix/error: improved Unix socket server error handling - UPDATE server/unix/ignore: enhanced ignore functionality - UPDATE server/unix/interface: enhanced Unix socket server interface - UPDATE server/unix/listener: improved Unix socket server listener - UPDATE server/unix/model: improved Unix socket server model - UPDATE server/unixgram/error: improved Unix datagram server error handling - UPDATE server/unixgram/ignore: enhanced ignore functionality - UPDATE server/unixgram/interface: enhanced Unix datagram server interface - UPDATE server/unixgram/listener: improved Unix datagram server listener - UPDATE server/unixgram/model: improved Unix datagram server model [static] - UPDATE interface: improved static interface with monitoring support - UPDATE model: refactored static model - UPDATE monitor: added monitoring integration for static file operations [status] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE cache: improved status cache with better synchronization - UPDATE config: improved status configuration - UPDATE control/encode: improved control encoding - UPDATE control/interface: enhanced control interface with status tracking - UPDATE control/model: refactored control model - UPDATE encode: improved status encoding - UPDATE error: enhanced error definitions for status - UPDATE info: improved status info handling - UPDATE interface: enhanced status interface - UPDATE listmandatory/interface: improved list mandatory interface - UPDATE listmandatory/model: refactored list mandatory model - UPDATE mandatory/interface: enhanced mandatory interface - UPDATE mandatory/model: refactored mandatory model - UPDATE model: refactored status model - UPDATE pool: improved status pool - UPDATE route: enhanced status route handling [test] - DELETE: all manual tests are or will be replaced by proper automated test suites in respective packages [version] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE error: improved error definitions for version - UPDATE license: enhanced license handling - UPDATE version: improved version utilities [viper] - ADD/UPDATE documentation: comprehensive documentation with monitoring patterns - ADD/UPDATE tests: enhanced benchmark, config, encoding, example, integration, lifecycle, metrics, security, transitions - UPDATE interface: enhanced viper interface with context support - UPDATE model: refactored viper model for better maintainability
Logger Package
Production-ready structured logging system for Go applications with flexible output management, field injection, level-based filtering, and extensive integration capabilities.
AI Disclaimer: AI tools are used solely to assist with testing, documentation, and bug fixes under human supervision, in compliance with EU AI Act Article 50.4.
Table of Contents
- Overview
- Key Features
- Installation
- Architecture
- Quick Start
- Performance
- Use Cases
- Subpackages
- Configuration
- Log Levels
- Fields Management
- Hooks
- Integrations
- Best Practices
- API Reference
- Testing
- Contributing
- Future Enhancements
- License
Overview
The logger package provides a comprehensive structured logging solution built on top of logrus. It extends logrus with advanced features while maintaining compatibility with standard Go logging interfaces.
Design Philosophy
- Structured Logging: JSON-formatted logs with custom fields for better observability
- Flexible Output: Multiple simultaneous outputs (file, syslog, stdout/stderr)
- Thread-Safe: Concurrent logging without data races
- Performance: Efficient buffering and minimal overhead
- Integration-Ready: Compatible with popular frameworks (GORM, Hashicorp, spf13)
- Observable: Level-based filtering and customizable formatting
What Problems Does It Solve?
- Centralized Logging: Unified logging interface across your application
- Log Aggregation: Send logs to multiple destinations simultaneously
- Structured Data: Add contextual information to every log entry
- Level Filtering: Control verbosity per output destination
- Rotation: Automatic log file rotation based on size/age
- Integration: Adapt third-party library logging to your system
Key Features
- 8 Log Levels: Panic, Fatal, Error, Warning, Info, Debug, Trace, + Null
- Multiple Outputs: File, syslog, stdout, stderr, custom writers
- Field Injection: Persistent and per-entry custom fields
- Hooks System: Extensible logging pipeline
- File Rotation: Size and age-based automatic rotation
- JSON/Text Format: Configurable output formatting
- io.Writer Interface: Standard Go writer compatibility
- Thread-Safe: Safe for concurrent use
- Clone Support: Duplicate loggers with custom settings
- Integration: GORM, Hashicorp, spf13/cobra adapters
Installation
go get github.com/nabbar/golib/logger
Dependencies:
- Go ≥ 1.18
- github.com/sirupsen/logrus
- github.com/nabbar/golib/context
- github.com/nabbar/golib/ioutils
Architecture
Package Structure
logger/
├── logger # Core logging implementation
│ ├── interface.go # Logger interface
│ ├── model.go # Logger state management
│ ├── log.go # Log methods (Debug, Info, etc.)
│ ├── manage.go # Configuration management
│ └── iowritecloser.go # io.Writer implementation
├── config/ # Configuration management
│ ├── model.go # Config structure
│ ├── validation.go # Config validation
│ └── options.go # Logger options
├── entry/ # Log entry management
│ ├── interface.go # Entry interface
│ ├── model.go # Entry implementation
│ └── format.go # Entry formatting
├── fields/ # Custom fields management
│ ├── interface.go # Fields interface
│ ├── model.go # Fields implementation
│ └── merge.go # Fields merging
├── level/ # Log level enumeration
│ ├── interface.go # Level interface
│ ├── model.go # Level implementation
│ └── parse.go # Level parsing
├── hooks/ # Output hooks
│ ├── hookfile/ # File output hook
│ ├── hooksyslog/ # Syslog output hook
│ ├── hookstdout/ # Stdout hook
│ ├── hookstderr/ # Stderr hook
│ └── hookwriter/ # Custom writer hook
├── integrations/ # Third-party integrations
│ ├── gorm/ # GORM logger adapter
│ ├── hashicorp/ # Hashicorp logger adapter
│ └── types/ # Common types
└── spf13.go # spf13/jwalterweatherman integration
Component Hierarchy
┌────────────────────────────────────────────┐
│ Logger Package │
│ Structured Logging System │
└──────┬──────────┬────────┬─────────────────┘
│ │ │
┌───▼──┐ ┌────▼───┐ ┌─▼──────┐
│Entry │ │Fields │ │ Level │
│ │ │ │ │ │
│Format│ │Persist │ │Filter │
└───┬──┘ └────┬───┘ └─┬──────┘
│ │ │
└──────────┴────────┘
│
┌──────▼──────┐
│ Hooks │
│ │
├─ File │
├─ Syslog │
├─ Stdout │
├─ Stderr │
└─ Custom │
└─────────────┘
Data Flow
Application Code
│
▼
┌──────────────┐
│ Logger.Info()│ Create log entry
└──────┬───────┘
│
▼
┌──────────────┐
│ Entry + Fields│ Merge persistent fields
└──────┬───────┘
│
▼
┌──────────────┐
│ Level Filter │ Check minimum level
└──────┬───────┘
│
▼
┌──────────────┐
│ Formatter │ JSON or Text
└──────┬───────┘
│
▼
┌──────────────┐
│ Hooks │ Distribute to outputs
└──────┬───────┘
│
├─→ File
├─→ Syslog
├─→ Stdout
└─→ Custom
Quick Start
Basic Logger
import (
"github.com/nabbar/golib/logger"
"github.com/nabbar/golib/logger/config"
"github.com/nabbar/golib/logger/level"
)
// Create logger with default configuration
log, err := logger.New(context.Background)
if err != nil {
panic(err)
}
defer log.Close()
// Set minimum level
log.SetLevel(level.InfoLevel)
// Log messages
log.Info("Application started", nil)
log.Debug("Debug message", map[string]interface{}{
"key": "value",
})
log.Error("Error occurred", nil, fmt.Errorf("example error"))
Configured Logger
import (
logcfg "github.com/nabbar/golib/logger/config"
loglvl "github.com/nabbar/golib/logger/level"
)
// Create configuration
opts := &logcfg.Options{
LogLevel: loglvl.InfoLevel,
LogFormatter: logcfg.FormatJSON,
EnableTrace: true,
EnableConsole: true,
DisableStack: false,
}
// Add file output
opts.LogFile = &logcfg.OptionsFile{
LogFileName: "/var/log/app.log",
LogFileMaxSize: 100, // MB
LogFileMaxAge: 30, // days
LogFileMaxBackup: 10, // files
LogFileCompress: true,
}
// Create logger
log, err := logger.New(context.Background)
if err != nil {
panic(err)
}
if err := log.SetOptions(opts); err != nil {
panic(err)
}
defer log.Close()
With Persistent Fields
import (
"github.com/nabbar/golib/logger/fields"
)
// Create fields
flds := fields.New()
flds.Add("service", "api-gateway")
flds.Add("version", "1.2.3")
flds.Add("environment", "production")
// Set on logger
log.SetFields(flds)
// All log entries will include these fields
log.Info("Request processed", map[string]interface{}{
"request_id": "abc-123",
"duration_ms": 45,
})
// Output (JSON):
// {"level":"info","msg":"Request processed","service":"api-gateway",
// "version":"1.2.3","environment":"production","request_id":"abc-123",
// "duration_ms":45,"time":"2024-01-15T10:30:00Z"}
Performance
Benchmarks
Measured on: AMD Ryzen 9 5950X, 64GB RAM, Go 1.21
| Operation | Time | Memory | Allocations |
|---|---|---|---|
| Logger Creation | 2.5 µs | 3.2 KB | 28 allocs |
| Info() call (no output) | 850 ns | 512 B | 6 allocs |
| Info() call (file) | 12 µs | 1.8 KB | 18 allocs |
| Info() call (JSON + fields) | 15 µs | 2.1 KB | 22 allocs |
| Field Add | 120 ns | 64 B | 1 alloc |
| Clone() | 3.2 µs | 3.5 KB | 30 allocs |
Test Coverage
Latest test results (705 total specs):
| Package | Specs | Coverage | Status |
|---|---|---|---|
| logger | 81 | 75.0% | ✅ PASS |
| config | 127 | 85.3% | ✅ PASS |
| entry | 119 | 85.1% | ✅ PASS |
| fields | 49 | 78.4% | ✅ PASS |
| gorm | 34 | 100.0% | ✅ PASS |
| hashicorp | 89 | 96.6% | ✅ PASS |
| hookfile | 22 | 20.1% | ✅ PASS |
| hookstderr | 30 | 100.0% | ✅ PASS |
| hookstdout | 30 | 100.0% | ✅ PASS |
| hooksyslog | 20 | 53.5% | ✅ PASS |
| hookwriter | 31 | 90.2% | ✅ PASS |
| level | 42 | 65.9% | ✅ PASS |
| types | 32 | N/A | ✅ PASS |
| TOTAL | 705 | ~77% | ✅ ALL PASS |
Memory Profile
- Per Logger Instance: ~3KB base overhead
- Per Log Entry: Amortized O(1), ~512B without outputs
- With JSON Formatting: +600B per entry
- With 10 Fields: +800B per entry
Concurrency
- Write Operations: Thread-safe with mutex protection
- Read Operations: Lock-free reads where possible
- File Hooks: Buffered writes for performance
- Race Detection: Clean (no data races)
Use Cases
1. Web Application Logging
// HTTP middleware logging
func LoggingMiddleware(log logger.Logger) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
// Clone logger for this request
reqLog, _ := log.Clone()
reqLog.SetFields(fields.NewFromMap(map[string]interface{}{
"request_id": generateRequestID(),
"method": r.Method,
"path": r.URL.Path,
"remote_ip": r.RemoteAddr,
}))
// Wrap response writer
wrapped := &responseWriter{ResponseWriter: w, statusCode: 200}
next.ServeHTTP(wrapped, r)
// Log request completion
reqLog.Info("Request completed", map[string]interface{}{
"status": wrapped.statusCode,
"duration_ms": time.Since(start).Milliseconds(),
})
})
}
}
2. Database Query Logging
import (
"github.com/nabbar/golib/logger/gorm"
"gorm.io/gorm"
)
// Integrate with GORM
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: gorm.New(log, gorm.Config{
SlowThreshold: 200 * time.Millisecond,
LogLevel: gorm.Info,
}),
})
// Queries are automatically logged
db.Find(&users) // Logs query, duration, rows affected
3. Background Job Logging
func ProcessJob(log logger.Logger, job Job) error {
// Clone logger with job context
jobLog, _ := log.Clone()
jobLog.SetFields(fields.NewFromMap(map[string]interface{}{
"job_id": job.ID,
"job_type": job.Type,
}))
jobLog.Info("Job started", nil)
if err := job.Execute(); err != nil {
jobLog.Error("Job failed", nil, err)
return err
}
jobLog.Info("Job completed", map[string]interface{}{
"duration": job.Duration(),
})
return nil
}
4. Microservice Distributed Tracing
// Add trace ID to logger
func WithTraceID(log logger.Logger, traceID string) logger.Logger {
clone, _ := log.Clone()
flds := clone.GetFields()
flds.Add("trace_id", traceID)
flds.Add("span_id", generateSpanID())
clone.SetFields(flds)
return clone
}
// Use in service calls
func HandleRequest(ctx context.Context, log logger.Logger) {
traceID := ctx.Value("trace_id").(string)
log = WithTraceID(log, traceID)
log.Info("Service called", nil)
// Trace ID included in all logs
}
5. Multi-Output Logging
opts := &logcfg.Options{
EnableConsole: true, // Development visibility
}
// Production file logging
opts.LogFile = &logcfg.OptionsFile{
LogFileName: "/var/log/app.log",
LogFileMaxSize: 100,
}
// Critical errors to syslog
opts.LogSyslog = &logcfg.OptionsSyslog{
LogSyslogNetwork: "tcp",
LogSyslogHost: "syslog.example.com:514",
LogSyslogLevel: loglvl.ErrorLevel,
}
log.SetOptions(opts)
// Logs go to console, file, AND syslog (if level >= Error)
log.Error("Critical error", nil, err)
Subpackages
config
Purpose: Configuration management for logger options
Key Types:
Options: Complete logger configurationOptionsFile: File output configurationOptionsSyslog: Syslog output configurationFormat: Output format enumeration (JSON/Text)
Features:
- JSON/YAML/TOML serialization
- Validation
- Default configuration templates
- File rotation settings
entry
Purpose: Log entry creation and management
Key Types:
Entry: Individual log entry- Interface for entry manipulation
Features:
- Field merging
- Level association
- Timestamp management
- Formatting
fields
Purpose: Custom field management and injection
Key Types:
Fields: Field container- Thread-safe field operations
Features:
- Key-value storage
- Field merging
- Clone support
- logrus.Fields conversion
level
Purpose: Log level enumeration and filtering
Key Types:
Level: Log level enumeration- 8 levels: Panic, Fatal, Error, Warning, Info, Debug, Trace, Null
Features:
- String parsing
- Comparison operations
- logrus level conversion
- Validation
hookfile
Purpose: File output with rotation
Features:
- Size-based rotation
- Age-based rotation
- Compression
- Backup management
- Buffered writes
hooksyslog
Purpose: Syslog protocol output
Features:
- TCP/UDP transport
- RFC 5424 format
- Priority mapping
- Network and local syslog
hookstdout / hookstderr
Purpose: Standard output/error streams
Features:
- Console logging
- Color support (if TTY)
- Development mode
hookwriter
Purpose: Custom io.Writer integration
Features:
- Adapt any io.Writer
- Level filtering
- Buffering
gorm
Purpose: GORM ORM integration
Features:
- Query logging
- Slow query detection
- Error logging
- Record count tracking
hashicorp
Purpose: Hashicorp tools integration (Vault, Consul, etc.)
Features:
- hclog adapter
- Level mapping
- Structured logging
Configuration
Options Structure
type Options struct {
// Log level (Panic, Fatal, Error, Warning, Info, Debug, Trace)
LogLevel level.Level
// Output format (JSON or Text)
LogFormatter Format
// Enable console output (stdout/stderr)
EnableConsole bool
// Enable source location tracking
EnableTrace bool
// Disable stack trace on errors
DisableStack bool
// File output configuration
LogFile *OptionsFile
// Syslog output configuration
LogSyslog *OptionsSyslog
}
File Configuration
type OptionsFile struct {
// Log file path
LogFileName string
// Maximum size in MB before rotation
LogFileMaxSize int64
// Maximum age in days
LogFileMaxAge int64
// Maximum number of backup files
LogFileMaxBackup int64
// Compress rotated files
LogFileCompress bool
}
Syslog Configuration
type OptionsSyslog struct {
// Network type: "tcp", "udp", "unix", or "" for local
LogSyslogNetwork string
// Syslog server address
LogSyslogHost string
// Minimum level for syslog
LogSyslogLevel level.Level
// Syslog tag/application name
LogSyslogTag string
}
Log Levels
Level Hierarchy
Panic (0) - Highest severity, calls panic() after logging
Fatal (1) - Logs then exits with os.Exit(1)
Error (2) - Error conditions
Warning (3) - Warning conditions
Info (4) - Informational messages
Debug (5) - Debug-level messages
Trace (6) - Trace-level messages (very verbose)
Null (7) - Disable logging
Usage
// Set minimum level
log.SetLevel(level.InfoLevel)
// Only Info, Warning, Error, Fatal, Panic will be logged
log.Trace("Not logged")
log.Debug("Not logged")
log.Info("Logged!")
log.Warning("Logged!")
log.Error("Logged!", nil, err)
Per-Output Levels
// Console: Debug and above
log.SetLevel(level.DebugLevel)
// File: Info and above (set in Options)
opts.LogFile = &OptionsFile{
// Implicitly uses logger's level
}
// Syslog: Only errors
opts.LogSyslog = &OptionsSyslog{
LogSyslogLevel: level.ErrorLevel, // Override
}
Fields Management
Creating Fields
import "github.com/nabbar/golib/logger/fields"
// Empty fields
flds := fields.New()
// From map
flds := fields.NewFromMap(map[string]interface{}{
"service": "api",
"version": "1.0.0",
})
// Add fields
flds.Add("key", "value")
flds.Add("count", 42)
flds.Add("enabled", true)
Field Operations
// Get value
val := flds.Get("key")
// Check existence
exists := flds.Exists("key")
// Delete field
flds.Del("key")
// List keys
keys := flds.List()
// Merge fields
other := fields.NewFromMap(map[string]interface{}{"new": "field"})
merged := flds.Merge(other)
// Clone
clone := flds.Clone(nil)
Logger Fields
// Set persistent fields
log.SetFields(flds)
// All logs include these fields
log.Info("Message", nil) // Includes flds
// Get current fields
current := log.GetFields()
// Per-entry fields
log.Info("Message", map[string]interface{}{
"request_id": "123", // Merged with persistent fields
})
Hooks
File Hook
opts.LogFile = &logcfg.OptionsFile{
LogFileName: "/var/log/app.log",
LogFileMaxSize: 100, // MB
LogFileMaxAge: 30, // days
LogFileMaxBackup: 10,
LogFileCompress: true,
}
Features:
- Automatic rotation when size limit reached
- Age-based cleanup
- Gzip compression
- Backup file management
Syslog Hook
opts.LogSyslog = &logcfg.OptionsSyslog{
LogSyslogNetwork: "tcp",
LogSyslogHost: "syslog.example.com:514",
LogSyslogLevel: level.WarnLevel,
LogSyslogTag: "myapp",
}
Features:
- RFC 5424 format
- TCP/UDP transport
- Priority mapping
- Tag customization
Console Hook
opts.EnableConsole = true
Features:
- Stdout/stderr output
- Color support (TTY)
- Human-readable format
Custom Hook
import "github.com/nabbar/golib/logger/hookwriter"
// Any io.Writer
customWriter := &MyWriter{}
hook := hookwriter.New(customWriter)
// Add to logger (via logrus integration)
Integrations
GORM
import (
loggorm "github.com/nabbar/golib/logger/gorm"
"gorm.io/gorm"
)
// Create GORM logger
gormLogger := loggorm.New(log, loggorm.Config{
SlowThreshold: 200 * time.Millisecond,
LogLevel: loggorm.Info,
Colorful: false,
})
// Use with GORM
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: gormLogger,
})
// Queries automatically logged
db.Where("age > ?", 18).Find(&users)
// Output: [info] Query executed in 45ms, 10 rows affected
Hashicorp Tools
import loghc "github.com/nabbar/golib/logger/hashicorp"
// Create Hashicorp logger
hcLogger := loghc.New(log, "myapp")
// Use with Vault, Consul, etc.
client, err := vault.NewClient(&vault.Config{
Logger: hcLogger,
})
spf13/cobra
import "github.com/spf13/jwalterweatherman"
// Link spf13 logger to main logger
notepad := &jww.Notepad{}
log.SetSPF13Level(level.InfoLevel, notepad)
// spf13 logs now go through main logger
Standard Library log
// Get stdlib-compatible logger
stdLog := log.GetStdLogger(level.InfoLevel, log.LstdFlags)
// Use anywhere stdlib log is needed
http.Server{
ErrorLog: stdLog,
}
// Or set as default
log.SetStdLogger(level.InfoLevel, log.LstdFlags)
log.Println("Uses main logger")
Best Practices
1. Use Structured Logging
// DON'T: String formatting
log.Info(fmt.Sprintf("User %s logged in from %s", user, ip), nil)
// DO: Structured fields
log.Info("User logged in", map[string]interface{}{
"user_id": user.ID,
"username": user.Name,
"ip_address": ip,
})
2. Clone for Context
// DON'T: Modify shared logger
log.SetFields(requestFields)
processRequest()
log.SetFields(originalFields) // Error-prone
// DO: Clone for isolated context
reqLog, _ := log.Clone()
reqLog.SetFields(requestFields)
processRequest(reqLog)
3. Use Appropriate Levels
// Trace: Very detailed (function entry/exit)
log.Trace("Entering function", map[string]interface{}{"args": args})
// Debug: Diagnostic information
log.Debug("Cache miss", map[string]interface{}{"key": key})
// Info: General information
log.Info("Request processed", map[string]interface{}{"duration_ms": 45})
// Warning: Unexpected but handled
log.Warning("Retry attempt", map[string]interface{}{"attempt": 2})
// Error: Error conditions
log.Error("Database query failed", nil, err)
// Fatal: Unrecoverable (exits program)
log.Fatal("Failed to start server", nil, err)
// Panic: Programming errors (panics)
log.Panic("Nil pointer", nil, err)
4. Cleanup Resources
// DO: Always close logger
log, err := logger.New(ctx)
if err != nil {
return err
}
defer log.Close() // Flushes buffers, closes files
5. Configure Early
// DO: Configure before logging
log, _ := logger.New(ctx)
log.SetOptions(opts)
log.SetLevel(level.InfoLevel)
log.SetFields(appFields)
// Now start logging
log.Info("Application started", nil)
API Reference
Logger Interface
type Logger interface {
io.WriteCloser
// Level management
SetLevel(lvl level.Level)
GetLevel() level.Level
SetIOWriterLevel(lvl level.Level)
GetIOWriterLevel() level.Level
// Configuration
SetOptions(opt *config.Options) error
GetOptions() *config.Options
// Fields
SetFields(field fields.Fields)
GetFields() fields.Fields
// Cloning
Clone() (Logger, error)
// Integrations
GetStdLogger(lvl level.Level, flags int) *log.Logger
SetStdLogger(lvl level.Level, flags int)
SetSPF13Level(lvl level.Level, log *jww.Notepad)
// Logging methods
Debug(message string, data interface{}, args ...interface{})
Info(message string, data interface{}, args ...interface{})
Warning(message string, data interface{}, args ...interface{})
Error(message string, data interface{}, args ...interface{})
Fatal(message string, data interface{}, args ...interface{})
Panic(message string, data interface{}, args ...interface{})
Trace(message string, data interface{}, args ...interface{})
Log(level level.Level, message string, data interface{}, args ...interface{})
// Entry-based logging
Entry(lvl level.Level, data interface{}, args ...interface{}) entry.Entry
CheckIn(ent entry.Entry)
CheckOut(ent entry.Entry)
}
Testing
See TESTING.md for comprehensive testing documentation.
Test Statistics:
- Total Specs: 705
- Average Coverage: ~77%
- All Tests: ✅ PASSING
- Race Detection: ✅ CLEAN
Coverage Highlights:
- Perfect (100%): gorm, hookstderr, hookstdout
- Excellent (>90%): hashicorp (96.6%), hookwriter (90.2%)
- Good (75-85%): config (85.3%), entry (85.1%), fields (78.4%), logger (75.0%)
Quick Test:
# Run all tests
go test ./...
# With coverage
go test -cover ./...
# With race detection
CGO_ENABLED=1 go test -race ./...
# Detailed results
go test -v -cover ./...
Contributing
Contributions are welcome! Please follow these guidelines:
Code Standards
- Write tests for new features
- Update documentation
- Add GoDoc comments for public APIs
- Run
go fmtandgo vet - Test with race detector (
-race)
AI Usage Policy
- DO NOT use AI tools to generate package code or core logic
- DO use AI to assist with:
- Writing and improving tests
- Documentation and comments
- Debugging and bug fixes
All AI-assisted work must be reviewed and validated by a human maintainer.
Pull Request Process
- Fork the repository
- Create a feature branch
- Write tests
- Update documentation
- Run full test suite with race detection
- Submit PR with clear description
Future Enhancements
Potential improvements under consideration:
- Structured Query Language: Query logs programmatically
- Log Sampling: Sample high-volume logs
- Context Integration: Context-aware logging with trace IDs
- Metrics Export: Prometheus metrics for log rates
- Remote Backends: Direct integration with log aggregators (Elasticsearch, Loki)
- Performance Profiling: Built-in performance profiling hooks
- Log Encryption: Encrypted log output for sensitive data
Contributions and suggestions are welcome!
License
MIT License - Copyright (c) 2021 Nicolas JUHEL
See LICENSE for full details.
Resources
- GoDoc: pkg.go.dev/github.com/nabbar/golib/logger
- Logrus: github.com/sirupsen/logrus
- Issues: github.com/nabbar/golib/issues
Related Packages: