5.1 KiB
5.1 KiB
Builder Pattern Guide
The Builder provides a fluent API for constructing and initializing logger instances with compile-time safety and deferred validation.
Creating a Builder
NewBuilder creates a new builder for constructing a logger instance.
func NewBuilder() *Builder
builder := log.NewBuilder()
Builder Methods
All builder methods return *Builder for chaining. Errors are accumulated and returned by Build().
Common Methods
| Method | Parameters | Description |
|---|---|---|
Level(level int64) |
level: Numeric log level |
Sets log level (-4 to 8) |
LevelString(level string) |
level: Named level |
Sets level by name ("debug", "info", etc.) |
Name(name string) |
name: Base filename |
Sets log file base name |
Directory(dir string) |
dir: Path |
Sets log directory |
Format(format string) |
format: Output format |
Sets format ("txt", "json", "raw") |
Sanitization(policy string) |
policy: Sanitization policy |
Sets policy ("txt", "json", "raw", "shell") |
Extension(ext string) |
ext: File extension |
Sets log file extension |
BufferSize(size int64) |
size: Buffer size |
Sets channel buffer size |
MaxSizeKB(size int64) |
size: Size in KB |
Sets max file size in KB |
MaxSizeMB(size int64) |
size: Size in MB |
Sets max file size in MB |
MaxTotalSizeKB(size int64) |
size: Size in KB |
Sets max total log directory size in KB |
MaxTotalSizeMB(size int64) |
size: Size in MB |
Sets max total log directory size in MB |
MinDiskFreeKB(size int64) |
size: Size in KB |
Sets minimum required free disk space in KB |
MinDiskFreeMB(size int64) |
size: Size in MB |
Sets minimum required free disk space in MB |
EnableConsole(enable bool) |
enable: Boolean |
Enables console output |
EnableFile(enable bool) |
enable: Boolean |
Enables file output |
ConsoleTarget(target string) |
target: "stdout"/"stderr" |
Sets console output target |
ShowTimestamp(show bool) |
show: Boolean |
Controls timestamp display |
ShowLevel(show bool) |
show: Boolean |
Controls log level display |
TimestampFormat(format string) |
format: Time format |
Sets timestamp format (Go time format) |
HeartbeatLevel(level int64) |
level: 0-3 |
Sets monitoring level (0=off) |
HeartbeatIntervalS(interval int64) |
interval: Seconds |
Sets heartbeat interval |
FlushIntervalMs(interval int64) |
interval: Milliseconds |
Sets buffer flush interval |
TraceDepth(depth int64) |
depth: 0-10 |
Sets default function trace depth |
DiskCheckIntervalMs(interval int64) |
interval: Milliseconds |
Sets disk check interval |
EnableAdaptiveInterval(enable bool) |
enable: Boolean |
Enables adaptive disk check intervals |
MinCheckIntervalMs(interval int64) |
interval: Milliseconds |
Sets minimum adaptive interval |
MaxCheckIntervalMs(interval int64) |
interval: Milliseconds |
Sets maximum adaptive interval |
EnablePeriodicSync(enable bool) |
enable: Boolean |
Enables periodic disk sync |
RetentionPeriodHrs(hours float64) |
hours: Hours |
Sets log retention period |
RetentionCheckMins(mins float64) |
mins: Minutes |
Sets retention check interval |
InternalErrorsToStderr(enable bool) |
enable: Boolean |
Send internal errors to stderr |
Build
func (b *Builder) Build() (*Logger, error)
Creates and initializes a logger instance with the configured settings. Returns accumulated errors if any builder operations failed.
logger, err := builder.Build()
if err != nil {
// Handle validation or initialization errors
}
defer logger.Shutdown()
Usage Pattern
// Single-step logger creation and initialization
logger, err := log.NewBuilder().
Directory("/var/log/app").
Format("json").
LevelString("debug").
Build()
if err != nil { return err }
defer logger.Shutdown()
// Start the logger
err = logger.Start()
if err != nil { return err }
logger.Info("Application started")