in client/cmd/client/main.go [90:117]
func configureLogging(logFile string, verbose bool) (*zap.Logger, error) {
if err := os.MkdirAll(filepath.Dir(logFile), 0755); err != nil {
return nil, fmt.Errorf("failed to create log directory: %w", err)
}
logFileHandle, err := os.OpenFile(logFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return nil, fmt.Errorf("failed to open log file: %w", err)
}
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.TimeKey = "timestamp"
encoderConfig.EncodeTime = zapcore.RFC3339NanoTimeEncoder
fileEncoder := zapcore.NewJSONEncoder(encoderConfig)
consoleEncoder := zapcore.NewConsoleEncoder(encoderConfig)
level := zap.InfoLevel
if verbose {
level = zap.DebugLevel
}
core := zapcore.NewTee(
zapcore.NewCore(fileEncoder, zapcore.AddSync(logFileHandle), level),
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), level),
)
return zap.New(core), nil
}