logging

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2024 License: MPL-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ValidLevels are the log level names that OpenTofu recognizes.
	ValidLevels = []string{"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"}
)

Functions

func CurrentLogLevel

func CurrentLogLevel() string

CurrentLogLevel returns the current log level string based the environment vars

func HCLogger

func HCLogger() hclog.Logger

HCLogger returns the default global hclog logger

func Indent

func Indent(s string) string

Indent adds two spaces to the beginning of each line of the given string, with the goal of making the log level filter understand it as a line continuation rather than possibly as new log lines.

func IsDebugOrHigher

func IsDebugOrHigher() bool

IsDebugOrHigher returns whether or not the current log level is debug or trace

func LogOutput

func LogOutput() io.Writer

LogOutput return the default global log io.Writer

func NewCloudLogger

func NewCloudLogger() hclog.Logger

NewCloudLogger returns a logger for the cloud plugin, possibly with a different log level from the global logger.

func NewLogger

func NewLogger(name string) hclog.Logger

NewLogger returns a new logger based in the current global logger, with the given name appended.

func NewProviderLogger

func NewProviderLogger(prefix string) hclog.Logger

NewProviderLogger returns a logger for the provider plugin, possibly with a different log level from the global logger.

func PanicHandler

func PanicHandler()

PanicHandler is called to recover from an internal panic in OpenTofu, and augments the standard stack trace with a more user friendly error message. PanicHandler must be called as a defered function, and must be the first defer called at the start of a new goroutine.

func PanicHandlerWithTraceFn

func PanicHandlerWithTraceFn() func()

PanicHandlerWithTraceFn returns a function similar to PanicHandler which is called to recover from an internal panic in OpenTofu, and augments the standard stack trace with a more complete stack trace. The calling stack trace is captured before returing the augmented panicHandler The returned panicHandler must be called as a defered function, and must be the first defer called at the start of a new goroutine.

Callers of this function should create the panicHandler before any tight looping as there may be a performance impact if called excessively.

This only is a partial solution to the problem of panics within deeply nested go-routines. It only works between the go-routine being called and the calling go-routine. If you have multiple nested go-rotuines, it will only preserve the calling stack and the called panic stack. Idealy we would be able to use context or a similar construct to build a more comprehensive panic handler, but this is a significant step in the right direction that will dramatically improve crash debugging

func PluginOutputMonitor

func PluginOutputMonitor(source string) io.Writer

PluginOutputMonitor creates an io.Writer that will warn about any writes in the default logger. This is used to catch unexpected output from plugins, notifying them about the problem as well as surfacing the lost data for context.

func PluginPanics

func PluginPanics() []string

PluginPanics returns a series of provider panics that were collected during execution, and formatted for output.

func RegisterSink

func RegisterSink(f *os.File)

SetupTempLog adds a new log sink which writes all logs to the given file.

Types

This section is empty.

Jump to

Keyboard shortcuts

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