Files
dbx/internal/dbxshared/logger.go
T
end 63187ee905 fix: harden module lifecycle and debug log setup
Export CurrentDialect(), return setup errors when debug logger is not
registered, and guard DestName logging when the module is uninitialized.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 17:50:31 -07:00

39 lines
1002 B
Go

package dbxshared
import "fmt"
type Logger interface {
InitLogger()
}
type dialectString interface {
String() string
}
var loggerRegistry = make(map[string]Logger)
// RegisterLogger allows dialect-specific loggers to be registered.
func RegisterLogger(dialect dialectString, logger Logger) {
dialectStr := dialect.String()
if _, exists := loggerRegistry[dialectStr]; exists {
panic("Logger for dialect already registered: " + dialectStr)
}
loggerRegistry[dialectStr] = logger
}
// InitLogger initializes the logger for a specific dialect.
func InitLogger(dialect dialectString) error {
dialectStr := dialect.String()
logger, exists := loggerRegistry[dialectStr]
if !exists {
return fmt.Errorf("no logger registered for dialect %q: blank-import dbxm (MySQL) or dbxp (Postgres)", dialectStr)
}
logger.InitLogger()
return nil
}
// ResetLoggerRegistry clears registered loggers. It is intended for tests only.
func ResetLoggerRegistry() {
loggerRegistry = make(map[string]Logger)
}