mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-25 01:00:16 -05:00
Accept TF_LOG=json to enable TRACE logs in JSON format
This is not currently a supported interface, but we plan to release tool(s) that consume parts of it that are more dependable later, separately from Terraform CLI itself.
This commit is contained in:
@@ -81,7 +81,7 @@ func HCLogger() hclog.Logger {
|
||||
// newHCLogger returns a new hclog.Logger instance with the given name
|
||||
func newHCLogger(name string) hclog.Logger {
|
||||
logOutput := io.Writer(os.Stderr)
|
||||
logLevel := globalLogLevel()
|
||||
logLevel, json := globalLogLevel()
|
||||
|
||||
if logPath := os.Getenv(envLogFile); logPath != "" {
|
||||
f, err := os.OpenFile(logPath, syscall.O_CREAT|syscall.O_RDWR|syscall.O_APPEND, 0666)
|
||||
@@ -97,6 +97,7 @@ func newHCLogger(name string) hclog.Logger {
|
||||
Level: logLevel,
|
||||
Output: logOutput,
|
||||
IndependentLevels: true,
|
||||
JSONFormat: json,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -127,7 +128,8 @@ func NewProviderLogger(prefix string) hclog.Logger {
|
||||
|
||||
// CurrentLogLevel returns the current log level string based the environment vars
|
||||
func CurrentLogLevel() string {
|
||||
return strings.ToUpper(globalLogLevel().String())
|
||||
ll, _ := globalLogLevel()
|
||||
return strings.ToUpper(ll.String())
|
||||
}
|
||||
|
||||
func providerLogLevel() hclog.Level {
|
||||
@@ -139,19 +141,25 @@ func providerLogLevel() hclog.Level {
|
||||
return parseLogLevel(providerEnvLevel)
|
||||
}
|
||||
|
||||
func globalLogLevel() hclog.Level {
|
||||
func globalLogLevel() (hclog.Level, bool) {
|
||||
var json bool
|
||||
envLevel := strings.ToUpper(os.Getenv(envLog))
|
||||
if envLevel == "" {
|
||||
envLevel = strings.ToUpper(os.Getenv(envLogCore))
|
||||
|
||||
}
|
||||
return parseLogLevel(envLevel)
|
||||
if envLevel == "JSON" {
|
||||
json = true
|
||||
}
|
||||
return parseLogLevel(envLevel), json
|
||||
}
|
||||
|
||||
func parseLogLevel(envLevel string) hclog.Level {
|
||||
if envLevel == "" {
|
||||
return hclog.Off
|
||||
}
|
||||
if envLevel == "JSON" {
|
||||
envLevel = "TRACE"
|
||||
}
|
||||
|
||||
logLevel := hclog.Trace
|
||||
if isValidLogLevel(envLevel) {
|
||||
@@ -166,7 +174,7 @@ func parseLogLevel(envLevel string) hclog.Level {
|
||||
|
||||
// IsDebugOrHigher returns whether or not the current log level is debug or trace
|
||||
func IsDebugOrHigher() bool {
|
||||
level := globalLogLevel()
|
||||
level, _ := globalLogLevel()
|
||||
return level == hclog.Debug || level == hclog.Trace
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user