logger

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2024 License: MIT Imports: 6 Imported by: 0

README

charm logger

This package can is used to log messages to the terminal with colors and styles.

See doc.go for usage.

Documentation

Overview

Package logger provides a logging interface and implementations using the charmbracelet/lipgloss and charmbracelet/log packages. It includes a configurable logger (CharmLogger) and a test logger (NullLogger) for capturing log output in tests.

Usage:

Basic usage of CharmLogger:

package main

import (
	"os"
	"github.com/yourusername/go-common/pkg/tui/logger/charm"
)

func main() {
	log := logger.New(os.Stdout, logger.LogLevelInfo)
	log.Info("This is an info message")
	log.Debug("This is a debug message") // This won't be printed because the level is set to Info
}

Using NullLogger for testing:

package main

import (
	"testing"
	"github.com/yourusername/go-common/pkg/tui/logger/charm"
)

func TestLogging(t *testing.T) {
	log := logger.NewTestLogger(t)
	log.Info("This is an info message")
	log.Debug("This is a debug message")
	// The log output can be accessed via log.LogOutput.String()
	if !strings.Contains(log.LogOutput.String(), "This is an info message") {
		t.Error("Expected info message to be logged")
	}
}

Index

Constants

View Source
const (
	LogLevelInfo  = "info"
	LogLevelDebug = "debug"
	LogLevelTrace = "trace"
	LogLevelWarn  = "warn"
	LogLevelError = "error"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CharmLogger

type CharmLogger struct {
	// contains filtered or unexported fields
}

CharmLogger is a charms/lipgloss based logger

func (*CharmLogger) Debug

func (l *CharmLogger) Debug(message string, keyvals ...any)

func (*CharmLogger) Debugf

func (l *CharmLogger) Debugf(format string, keyvals ...any)

func (*CharmLogger) Error

func (l *CharmLogger) Error(message string, keyvals ...any)

func (*CharmLogger) Fatal

func (l *CharmLogger) Fatal(message string, keyvals ...any)

func (*CharmLogger) Info

func (l *CharmLogger) Info(message string, keyvals ...any)

func (*CharmLogger) Infof

func (l *CharmLogger) Infof(format string, keyvals ...any)

func (*CharmLogger) IsDebug

func (l *CharmLogger) IsDebug() bool

func (*CharmLogger) IsError

func (l *CharmLogger) IsError() bool

func (*CharmLogger) IsInfo

func (l *CharmLogger) IsInfo() bool

func (*CharmLogger) IsTrace

func (l *CharmLogger) IsTrace() bool

func (*CharmLogger) IsWarn

func (l *CharmLogger) IsWarn() bool

func (*CharmLogger) Level

func (l *CharmLogger) Level() string

func (*CharmLogger) Output

func (l *CharmLogger) Output() io.Writer

func (*CharmLogger) Print

func (l *CharmLogger) Print(message string, keyvals ...any)

func (*CharmLogger) SetInteractive

func (l *CharmLogger) SetInteractive(interactive string, isTerminal bool)

func (*CharmLogger) SetLevel

func (l *CharmLogger) SetLevel(level string) error

func (*CharmLogger) SetOutput

func (l *CharmLogger) SetOutput(w io.Writer)

func (*CharmLogger) StandardWriter

func (l *CharmLogger) StandardWriter() io.Writer

func (*CharmLogger) Trace

func (l *CharmLogger) Trace(message string, keyvals ...any)

func (*CharmLogger) Warn

func (l *CharmLogger) Warn(message string, keyvals ...any)

func (*CharmLogger) WithPrefix

func (l *CharmLogger) WithPrefix(prefix string) Logger

type Logger

type Logger interface {
	// Set the logger level
	SetLevel(level string) error

	Level() string

	// Set the logger output
	SetOutput(w io.Writer)

	Output() io.Writer

	// Print prints a log message
	Print(message string, keyvals ...any)
	// Info logs to info level
	Info(message string, keyvals ...any)
	// Debug logs to debug level
	Debug(message string, keyvals ...any)
	// Error logs to error level
	Error(message string, keyvals ...any)
	// Fatal logs to fatal level
	Fatal(message string, keyvals ...any)
	// Warn logs to warn level
	Warn(message string, keyvals ...any)
	// Trace logs to trace level
	Trace(message string, keyvals ...any)
	// Infof logs formatted info level
	Infof(format string, keyvals ...any)
	// Debugf logs formatted debug level
	Debugf(format string, keyvals ...any)

	StandardWriter() io.Writer

	IsInfo() bool
	IsDebug() bool
	IsError() bool
	IsTrace() bool
	IsWarn() bool

	WithPrefix(string) Logger

	SetInteractive(string, bool)
}

Logger defines an abstract logger that can be used to log to the output

func New

func New(w io.Writer, level string) Logger

func NewTestLogger

func NewTestLogger(t *testing.T) Logger

Logger that sends all output to a string buffer the captured log output can be retrieved by accessing the string buffer at LogOutput In the instance of a test failure, the log output is written to StdOut

type NullLogger

type NullLogger struct {
	Logger
	LogOutput *strings.Builder
}

NullLogger is a logger implementation that captures log output in a string builder. It embeds the Logger interface and provides a LogOutput field to access the captured logs. Useful for tests

Jump to

Keyboard shortcuts

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