// Copyright IBM Corp. 2014, 2026 // 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 }