logger.go

Functions

Functions

func Enabled

func (nopHandler) Enabled(context.Context, slog.Level) bool	{ return false }

func Handle

func (nopHandler) Handle(context.Context, slog.Record) error	{ return nil }

func Logger

Logger returns the current logger used by gg.

Sub-packages (gpu/, integration/ggcanvas/) call this to share the same

logger configuration without introducing import cycles.

 

Logger is safe for concurrent use.

func Logger() *slog.Logger {
	return loggerPtr.Load()
}

func SetLogger

SetLogger configures the logger for gg and all its sub-packages.

By default, gg produces no log output. Call SetLogger to enable logging.

 

SetLogger is safe for concurrent use: it stores the new logger atomically.

Pass nil to disable logging (restore default silent behavior).

 

Log levels used by gg:

- [slog.LevelDebug]: internal diagnostics (GPU pipeline state, buffer sizes)

- [slog.LevelInfo]: important lifecycle events (GPU adapter selected)

- [slog.LevelWarn]: non-fatal issues (CPU fallback, resource release errors)

 

Example:

 

// Enable info-level logging to stderr:

gg.SetLogger(slog.Default())

 

// Enable debug-level logging for full diagnostics:

gg.SetLogger(slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{

Level: slog.LevelDebug,

})))

func SetLogger(l *slog.Logger) {
	if l == nil {
		l = newNopLogger()
	}
	loggerPtr.Store(l)

	// Propagate to GPU accelerator if it supports logging.
	accelMu.RLock()
	a := accel
	accelMu.RUnlock()
	if a != nil {
		propagateLogger(a, l)
	}
}

func WithAttrs

func (nopHandler) WithAttrs([]slog.Attr) slog.Handler	{ return nopHandler{} }

func WithGroup

func (nopHandler) WithGroup(string) slog.Handler	{ return nopHandler{} }