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
- type CharmLogger
- func (l *CharmLogger) Debug(message string, keyvals ...any)
- func (l *CharmLogger) Debugf(format string, keyvals ...any)
- func (l *CharmLogger) Error(message string, keyvals ...any)
- func (l *CharmLogger) Fatal(message string, keyvals ...any)
- func (l *CharmLogger) Info(message string, keyvals ...any)
- func (l *CharmLogger) Infof(format string, keyvals ...any)
- func (l *CharmLogger) IsDebug() bool
- func (l *CharmLogger) IsError() bool
- func (l *CharmLogger) IsInfo() bool
- func (l *CharmLogger) IsTrace() bool
- func (l *CharmLogger) IsWarn() bool
- func (l *CharmLogger) Level() string
- func (l *CharmLogger) Output() io.Writer
- func (l *CharmLogger) Print(message string, keyvals ...any)
- func (l *CharmLogger) SetInteractive(interactive string, isTerminal bool)
- func (l *CharmLogger) SetLevel(level string) error
- func (l *CharmLogger) SetOutput(w io.Writer)
- func (l *CharmLogger) StandardWriter() io.Writer
- func (l *CharmLogger) Trace(message string, keyvals ...any)
- func (l *CharmLogger) Warn(message string, keyvals ...any)
- func (l *CharmLogger) WithPrefix(prefix string) Logger
- type Logger
- type NullLogger
Constants ¶
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 NewTestLogger ¶
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 ¶
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