Skip to main content
Help improve this documentation

This documentation is still new and evolving. If you spot any mistakes, unclear explanations, or missing details, please open an issue.

Your feedback helps us improve!

Logger/log operatorsโ€‹

This page lists all operators available in the observability/log sub-package of ro.

Installโ€‹

First, import the sub-package in your project:

go get -u github.com/samber/ro/plugins/observability/log
  • Logs observable events.

    import (
    "github.com/samber/ro"
    rolog "github.com/samber/ro/plugins/observability/log"
    )

    obs := ro.Pipe(
    ro.Just(1, 2, 3),
    rolog.Log[int](),
    )

    sub := obs.Subscribe(ro.PrintObserver[int]())
    defer sub.Unsubscribe()

    // Logs: [1]
    // Logs: [2]
    // Logs: [3]
    // Next: 1
    // Next: 2
    // Next: 3
    // Completed
    Prototype:
    func Log[T any]()
  • LogWithPrefixโ€‹

    Logs observable events with a custom prefix.

    import (
    "github.com/samber/ro"
    rolog "github.com/samber/ro/plugins/observability/log"
    )

    obs := ro.Pipe(
    ro.Just(1, 2, 3),
    rolog.LogWithPrefix[int]("MyStream"),
    )

    sub := obs.Subscribe(ro.PrintObserver[int]())
    defer sub.Unsubscribe()

    // Logs: MyStream ro.Next: 1
    // Logs: MyStream ro.Next: 2
    // Logs: MyStream ro.Next: 3
    // Next: 1
    // Next: 2
    // Next: 3
    // Completed
    Prototype:
    func LogWithPrefix[T any](prefix string)
  • FatalOnErrorWithPrefixโ€‹

    Terminates the application on error with prefixed logging.

    import (
    "errors"

    "github.com/samber/ro"
    rolog "github.com/samber/ro/plugins/observability/log"
    )

    obs := ro.Pipe(
    ro.Just(1, 2),
    ro.Throw[int](errors.New("fatal error")),
    rolog.FatalOnErrorWithPrefix[int]("Critical"),
    )

    sub := obs.Subscribe(ro.PrintObserver[int]())
    defer sub.Unsubscribe()

    // Next: 1
    // Next: 2
    // Logs: Critical ro.Error: fatal error
    // Application terminates with fatal error
    Prototype:
    func FatalOnErrorWithPrefix[T any](prefix string)
  • FatalOnErrorโ€‹

    Calls fatal on error.

    import (
    "errors"

    "github.com/samber/ro"
    rolog "github.com/samber/ro/plugins/observability/log"
    )

    obs := ro.Pipe(
    ro.Throw[string](errors.New("fatal error")),
    rolog.FatalOnError[string](),
    )

    sub := obs.Subscribe(ro.PrintObserver[string]())
    defer sub.Unsubscribe()

    // Fatal: fatal error
    // (program exits)
    Prototype:
    func FatalOnError[T any]()