blob: b9a09802ee3b51fd5397b7d8ccfce044c75cc98f [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package oci
import (
"sync"
hclog "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-uuid"
"github.com/hashicorp/terraform/internal/logging"
"github.com/oracle/oci-go-sdk/v65/common"
)
var (
loggerFunc = sync.OnceValue(func() hclog.Logger {
l := logging.HCLogger()
return l.Named("backend-oracle_oci")
})
)
type backendLogger struct {
hclog.Logger
}
func setSDKLogger() {
sdklogger := NewBackendLogger(loggerFunc().With("component", "oci-go-sdk"))
common.SetSDKLogger(sdklogger)
}
func NewBackendLogger(l hclog.Logger) backendLogger {
return backendLogger{l}
}
// This fuction is needed for oci-go-sdk
func (l backendLogger) LogLevel() int {
return int(l.Logger.GetLevel())
}
func (l backendLogger) Log(logLevel int, format string, v ...interface{}) error {
l.Logger.Log(hclog.Level(logLevel), format, v...)
return nil
}
func logWithOperation(operation string) hclog.Logger {
log := loggerFunc().With(
"operation", operation,
)
if id, err := uuid.GenerateUUID(); err == nil {
log = log.With(
"req_id", id,
)
}
return log
}