Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FatalOnError ¶
func FatalOnError[T any](logger *zap.Logger) func(ro.Observable[T]) ro.Observable[T]
FatalOnError terminates the program with a fatal error when an observable error notification occurs using zap logger. Play: https://go.dev/play/p/00E6cS_aAWU
func Log ¶
func Log[T any](logger *zap.Logger, level zapcore.Level) func(ro.Observable[T]) ro.Observable[T]
Log logs all observable notifications (Next, Error, Complete) using zap logger with formatted messages. Play: https://go.dev/play/p/3kWjeZo4ciK
Example ¶
// Initialize zap logger with custom config to match expected output logger := createTestLogger(zapcore.InfoLevel) // Log all notifications (Next, Error, Complete) observable := ro.Pipe1( ro.Just(1, 2, 3, 4, 5), Log[int](logger, zapcore.InfoLevel), ) subscription := observable.Subscribe(ro.NoopObserver[int]()) defer subscription.Unsubscribe() logger.Sync()
Output: 2024-01-01T12:00:00.000Z INFO ro.Next: 1 2024-01-01T12:00:00.000Z INFO ro.Next: 2 2024-01-01T12:00:00.000Z INFO ro.Next: 3 2024-01-01T12:00:00.000Z INFO ro.Next: 4 2024-01-01T12:00:00.000Z INFO ro.Next: 5 2024-01-01T12:00:00.000Z INFO ro.Complete
Example (InPipeline) ¶
// Initialize zap logger with custom config to match expected output
logger := createTestLogger(zapcore.DebugLevel)
// Use logging in a complex pipeline
observable := ro.Pipe3(
ro.Just(1, 2, 3, 4, 5),
ro.Filter(func(n int) bool { return n%2 == 0 }), // Keep even numbers
Log[int](logger, zapcore.InfoLevel),
ro.Map(func(n int) string { return fmt.Sprintf("Even: %d", n) }),
)
subscription := observable.Subscribe(ro.NewObserver(
func(value string) {
// Consume values to trigger logging
},
func(err error) {
// Handle errors
},
func() {
// Handle completion
},
))
defer subscription.Unsubscribe()
logger.Sync()
Output: 2024-01-01T12:00:00.000Z INFO ro.Next: 2 2024-01-01T12:00:00.000Z INFO ro.Next: 4 2024-01-01T12:00:00.000Z INFO ro.Complete
Example (WithContext) ¶
// Initialize zap logger with custom config to match expected output
logger := createTestLogger(zapcore.DebugLevel)
// Log with context-aware operations
ctx := context.Background()
observable := ro.Pipe1(
ro.Just("context", "aware", "logging"),
LogWithNotification[string](logger, zapcore.InfoLevel),
)
subscription := observable.SubscribeWithContext(ctx, ro.NewObserverWithContext(
func(ctx context.Context, value string) {
// Consume values to trigger logging
},
func(ctx context.Context, err error) {
// Handle errors
},
func(ctx context.Context) {
// Handle completion
},
))
defer subscription.Unsubscribe()
logger.Sync()
Output: 2024-01-01T12:00:00.000Z INFO ro.Next {"value": "context"} 2024-01-01T12:00:00.000Z INFO ro.Next {"value": "aware"} 2024-01-01T12:00:00.000Z INFO ro.Next {"value": "logging"} 2024-01-01T12:00:00.000Z INFO ro.Complete
Example (WithCustomLevels) ¶
// Initialize zap logger with custom config to match expected output logger := createTestLogger(zapcore.DebugLevel) // Demonstrate different log levels observable := ro.Pipe1( ro.Just(1, 2, 3, 4, 5), Log[int](logger, zapcore.WarnLevel), ) subscription := observable.Subscribe(ro.NoopObserver[int]()) defer subscription.Unsubscribe() logger.Sync()
Output: 2024-01-01T12:00:00.000Z WARN ro.Next: 1 2024-01-01T12:00:00.000Z WARN ro.Next: 2 2024-01-01T12:00:00.000Z WARN ro.Next: 3 2024-01-01T12:00:00.000Z WARN ro.Next: 4 2024-01-01T12:00:00.000Z WARN ro.Next: 5 2024-01-01T12:00:00.000Z WARN ro.Complete
Example (WithError) ¶
// Initialize zap logger with custom config to match expected output
logger := createTestLogger(zapcore.DebugLevel)
// Log including error notifications
observable := ro.Pipe1(
ro.NewObservable(func(observer ro.Observer[int]) ro.Teardown {
observer.Next(1)
observer.Next(2)
observer.Error(errors.New("something went wrong"))
observer.Next(3) // This won't be emitted due to error
return nil
}),
Log[int](logger, zapcore.ErrorLevel),
)
subscription := observable.Subscribe(ro.NewObserver(
func(value int) {
// Consume values to trigger logging
},
func(err error) {
// Handle errors
},
func() {
// Handle completion
},
))
defer subscription.Unsubscribe()
logger.Sync()
Output: 2024-01-01T12:00:00.000Z ERROR ro.Next: 1 2024-01-01T12:00:00.000Z ERROR ro.Next: 2 2024-01-01T12:00:00.000Z ERROR ro.Error: something went wrong
func LogWithNotification ¶
func LogWithNotification[T any](logger *zap.Logger, level zapcore.Level) func(ro.Observable[T]) ro.Observable[T]
LogWithNotification logs all observable notifications using zap logger with structured notification data. Play: https://go.dev/play/p/XXS2joeg3JN
Example ¶
// Initialize zap logger with custom config to match expected output
logger := createTestLogger(zapcore.DebugLevel)
// Log with structured notification data
observable := ro.Pipe1(
ro.Just("hello", "world", "golang"),
LogWithNotification[string](logger, zapcore.DebugLevel),
)
subscription := observable.Subscribe(ro.NoopObserver[string]())
defer subscription.Unsubscribe()
logger.Sync()
Output: 2024-01-01T12:00:00.000Z DEBUG ro.Next {"value": "hello"} 2024-01-01T12:00:00.000Z DEBUG ro.Next {"value": "world"} 2024-01-01T12:00:00.000Z DEBUG ro.Next {"value": "golang"} 2024-01-01T12:00:00.000Z DEBUG ro.Complete
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.