output

package
v1.24.10 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2025 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// UserOut is the customized logrus log used for direct user output
	UserOut = func() *log.Logger {
		l := log.New()
		l.SetOutput(os.Stdout)
		logLevel := log.InfoLevel
		if os.Getenv("DDEV_DEBUG") == "true" || os.Getenv("DDEV_VERBOSE") == "true" {
			logLevel = log.DebugLevel
		}
		l.SetLevel(logLevel)
		log.SetLevel(logLevel)
		if JSONOutput {
			l.SetFormatter(DdevOutputJSONFormatter)
			log.SetFormatter(DdevOutputJSONFormatter)
		} else {
			l.SetFormatter(DdevOutputFormatter)
			log.SetFormatter(DdevOutputFormatter)
		}
		return l
	}()
	// UserErr is the customized logrus log used for direct user stderr
	UserErr = func() *log.Logger {
		l := log.New()
		l.SetOutput(&ErrorWriter{})
		if JSONOutput {
			l.SetFormatter(DdevOutputJSONFormatter)
		} else {
			l.SetFormatter(DdevOutputFormatter)
		}
		return l
	}()
	// DdevOutputFormatter is the specialized formatter for UserOut
	DdevOutputFormatter = &TextFormatter{
		DisableColors:    !ColorsEnabled(),
		DisableTimestamp: true,
	}
	// DdevOutputJSONFormatter is the specialized JSON formatter for UserOut
	DdevOutputJSONFormatter = &log.JSONFormatter{}
	// JSONOutput indicates if JSON output mode is enabled, determined by command-line flags.
	// Parsed early, prior to Cobra flag initialization, to configure logging correctly from start.
	// Manual parsing is necessary because Cobra registers flags too late for this early use.
	JSONOutput = ParseBoolFlag("json-output", "j")
)

Functions

func ColorsEnabled added in v1.24.7

func ColorsEnabled() bool

ColorsEnabled returns true if colored output is enabled Implementation from https://no-color.org/

func ParseBoolFlag added in v1.24.7

func ParseBoolFlag(long string, short string) bool

ParseBoolFlag scans os.Args backward to apply last-occurrence precedence for a boolean flag. Handles both --long[=true|false] and -s[=true|false] forms. Treats short flag in combined group (e.g. -xj) as implicit true. Returns false if the flag is absent or its value is invalid. Disabled entirely when running under `go test`.

Types

type ErrorWriter added in v1.21.5

type ErrorWriter struct{}

ErrorWriter allows writing stderr Splitting to stderr approach from https://huynvk.dev/blog/4-tips-for-logging-on-gcp-using-golang-and-logrus

func (*ErrorWriter) Write added in v1.21.5

func (w *ErrorWriter) Write(p []byte) (n int, err error)

type Fields added in v1.24.7

type Fields = log.Fields

type TextFormatter

type TextFormatter struct {
	// Set to true to bypass checking for a TTY before outputting colors.
	ForceColors bool

	// Force disabling colors.
	DisableColors bool

	// Disable timestamp logging. useful when output is redirected to logging
	// system that already adds timestamps.
	DisableTimestamp bool

	// Enable logging the full timestamp when a TTY is attached instead of
	// the time passed since beginning of execution.
	FullTimestamp bool

	// TimestampFormat to use for display when a full timestamp is printed
	TimestampFormat string

	// The fields are sorted by default for a consistent output. For applications
	// that log extremely frequently and don't use the JSON formatter this may not
	// be desired.
	DisableSorting bool

	// QuoteEmptyFields will wrap empty fields in quotes if true
	QuoteEmptyFields bool

	sync.Once
	// contains filtered or unexported fields
}

TextFormatter formats logs into text. This is a specialization of https://github.com/sirupsen/logrus/blob/master/text_formatter.go It's intended to be used for all user-oriented output from DDEV

func (*TextFormatter) Format

func (f *TextFormatter) Format(entry *log.Entry) ([]byte, error)

Format renders a single log entry. A key named "raw" is discarded here as it's for json consumption.

Jump to

Keyboard shortcuts

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