pl

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

README

pl Go Reference codecov experimental

pl tails and pretty-prints JSONL logs produced by zap (the zap.NewProductionConfig JSON encoder, as used by go-faster/sdk).

Install

go install github.com/go-faster/pl/cmd/pl@latest

Usage

Pipe logs in:

my-service 2>&1 | pl

Follow a file (tail -f style):

pl -f service.log

Read a file once and exit:

pl service.log

Output is colorized when stdout is a terminal. Non-JSON lines are passed through untouched, so mixed output is safe. Disable colors with --no-color or by setting NO_COLOR.

Flags
-f, --follow      follow the file, waiting for new lines (like tail -f)
    --no-color    disable ANSI colors
    --no-time     omit timestamps from the output
    --level       minimum level to display (debug|info|warn|error)
    --timezone    convert timestamps to this timezone (e.g. UTC, Local, America/New_York)
Level styles

Levels render as a single colored character by default — D, I, W, E, and C for dpanic/panic/fatal:

03:00:00.099 D verbose detail
03:00:00.200 I metrics Starting attempt=3
03:00:00.299 W disk low note="needs attention"
03:00:00.400 E boom err=x
03:00:00.500 C giving up

When used as a library, override per-level label and color via Formatter.LevelStyles (levels absent from the map keep their defaults):

f := &pl.Formatter{
    Color: true,
    LevelStyles: map[zapcore.Level]pl.LevelStyle{
        zapcore.WarnLevel: {Label: "WARN", Color: "\033[33m"},
    },
}

Documentation

Overview

Package pl tails and pretty-prints JSONL logs produced by zap (the zap.NewProductionConfig JSON encoder used by go-faster/sdk).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultLevelStyles

func DefaultLevelStyles() map[zapcore.Level]LevelStyle

DefaultLevelStyles returns the built-in level styles: a single-character label and a color per level (D/I/W/E, and C for dpanic/panic/fatal).

Types

type Formatter

type Formatter struct {
	// Color enables ANSI colors in the output.
	Color bool
	// MinLevel, when set, drops lines below this level.
	MinLevel zapcore.Level
	// TimeFormat is the layout for the timestamp. Defaults to "15:04:05.000".
	TimeFormat string
	// NoTime omits the timestamp from the output entirely.
	NoTime bool
	// Location, when set, converts timestamps to this timezone before
	// formatting. A nil Location uses the timestamp's own location.
	Location *time.Location
	// LevelStyles overrides how levels are rendered. Levels absent from the map
	// fall back to DefaultLevelStyles; a nil map uses the defaults entirely.
	LevelStyles map[zapcore.Level]LevelStyle
	// contains filtered or unexported fields
}

Formatter renders a single zap JSON log line into a human-readable form.

func (*Formatter) Follow

func (f *Formatter) Follow(ctx context.Context, path string, w io.Writer) error

Follow tails the file at path (like tail -f), formatting new lines as they are appended. It handles truncation/rotation by reopening when the file shrinks. It blocks until ctx is canceled.

func (*Formatter) Format

func (f *Formatter) Format(line []byte) (out string, ok bool)

Format parses a single JSON log line and returns its pretty representation.

The returned bool reports whether the line should be printed. Lines that are not valid zap JSON are returned unchanged (and ok is true) so that mixed output is preserved. Lines below MinLevel are dropped (ok is false).

func (*Formatter) Process

func (f *Formatter) Process(ctx context.Context, r io.Reader, w io.Writer) error

Process reads newline-delimited logs from r, formats each line with f and writes the result to w until r is exhausted or ctx is canceled.

func (*Formatter) SetMinLevel

func (f *Formatter) SetMinLevel(l zapcore.Level)

SetMinLevel sets the minimum level to display.

type LevelStyle

type LevelStyle struct {
	// Label is the text shown for the level (e.g. "I" for info).
	Label string
	// Color is the ANSI escape sequence applied to the label. Empty means no
	// color. Ignored when the Formatter has Color disabled.
	Color string
}

LevelStyle controls how a single log level is rendered.

Directories

Path Synopsis
cmd
pl command
Command pl tails and pretty-prints JSONL logs produced by zap (the zap.NewProductionConfig JSON encoder used by go-faster/sdk).
Command pl tails and pretty-prints JSONL logs produced by zap (the zap.NewProductionConfig JSON encoder used by go-faster/sdk).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL