Files
codeql/go/extractor/util/logging.go
2025-09-05 14:18:31 +01:00

46 lines
1.1 KiB
Go

package util
import (
"log/slog"
"os"
"strings"
)
// Mirrors the verbosity definitions in the CodeQL CLI, which are passed to us
// in the `CODEQL_VERBOSITY` environment variable.
type Verbosity string
const (
// Only print error messages.
Errors Verbosity = "errors"
// Print warnings and error messages.
Warnings Verbosity = "warnings"
// Default verbosity.
Progress Verbosity = "progress"
// More details of normal operations.
Details Verbosity = "progress+"
// Debug level set by e.g. the CodeQL Action.
Spammy Verbosity = "progress++"
// The most detailed.
Spammier Verbosity = "progress+++"
)
func parseLogLevel(value string) slog.Level {
value = strings.ToLower(value)
if strings.HasPrefix(value, string(Details)) {
return slog.LevelDebug
} else if value == string(Errors) {
return slog.LevelError
} else if value == string(Warnings) {
return slog.LevelWarn
} else {
// Default
return slog.LevelInfo
}
}
// Sets the log level for the default `slog` logger, based on `CODEQL_VERBOSITY`.
func SetLogLevel() {
slog.SetLogLoggerLevel(parseLogLevel(os.Getenv("CODEQL_VERBOSITY")))
}