---
title: internal/rlog
description: Go API reference for the rlog package.
---
# rlog
```go
import "github.com/jbcom/radioactive-ralph/internal/rlog"
```
Package rlog is a thin slog wrapper that emits records shaped like Claude's stream\-json events when the caller opts into JSON output. Default \(text\) output is operator\-facing human logging on stderr.
The shape is intentionally aligned with claude's stream\-json so operator\-facing and subprocess\-facing log streams can be multiplexed through the same tooling:
```
{"type":"ralph","event":"init.start","ts":"2026-04-15T...","repo":"..."}
```
\`type: ralph\` disambiguates ralph\-emitted records from claude\-emitted \`type: assistant\` / \`type: user\` records when an operator tails a merged log stream.
## Index
- [func FromContext\(ctx context.Context\) \*slog.Logger](<#FromContext>)
- [func New\(mode Mode, w io.Writer\) \*slog.Logger](<#New>)
- [func WithLogger\(ctx context.Context, logger \*slog.Logger\) context.Context](<#WithLogger>)
- [type Mode](<#Mode>)
## func [FromContext]()
```go
func FromContext(ctx context.Context) *slog.Logger
```
FromContext retrieves the logger attached by WithLogger, or returns the default slog logger if none. Callers can use this without threading a \*slog.Logger through every function signature.
## func [New]()
```go
func New(mode Mode, w io.Writer) *slog.Logger
```
New returns a \*slog.Logger configured for the requested mode. Writer defaults to os.Stderr when nil.
## func [WithLogger]()
```go
func WithLogger(ctx context.Context, logger *slog.Logger) context.Context
```
WithLogger attaches a logger to ctx for downstream callers.
## type [Mode]()
Mode controls the output format selected by the CLI.
```go
type Mode string
```
```go
const (
// ModeText is the default human-readable stderr output.
ModeText Mode = "text"
// ModeJSON emits one JSON record per log call, shaped like
// claude stream-json events with type=ralph.
ModeJSON Mode = "json"
)
```
Generated by [gomarkdoc]()