MCPcopy Index your code
hub / github.com/cloudquery/cloudquery / initLogging

Function initLogging

cli/cmd/logging.go:16–66  ·  view source on GitHub ↗
(noLogFile bool, logLevel *enum.Enum, logFormat *enum.Enum, logConsole bool, logFileName string, logFileOverwrite bool)

Source from the content-addressed store, hash-verified

14)
15
16func initLogging(noLogFile bool, logLevel *enum.Enum, logFormat *enum.Enum, logConsole bool, logFileName string, logFileOverwrite bool) (*os.File, error) {
17 var logFile *os.File
18 zerologLevel, err := zerolog.ParseLevel(logLevel.String())
19 if err != nil {
20 return nil, err
21 }
22 var writers []io.Writer
23 if !noLogFile {
24 flags := os.O_CREATE | os.O_WRONLY
25 if logFileOverwrite {
26 flags |= os.O_TRUNC
27 } else {
28 flags |= os.O_APPEND
29 }
30 logFile, err = os.OpenFile(logFileName, flags, 0666)
31 if err != nil {
32 return nil, err
33 }
34 if logFormat.String() == "text" {
35 // for file logging we don't need color. we can add it as an option but don't think it is useful
36 writers = append(writers, zerolog.ConsoleWriter{
37 Out: logFile,
38 NoColor: true,
39 FormatTimestamp: formatTimestampUtcRfc3339,
40 })
41 } else {
42 writers = append(writers, logFile)
43 }
44 }
45 if logConsole {
46 if err := os.Stdout.Close(); err != nil {
47 return nil, fmt.Errorf("failed to close stdout: %w", err)
48 }
49 if logFormat.String() == "text" {
50 writers = append(writers, zerolog.ConsoleWriter{
51 Out: os.Stderr,
52 NoColor: true,
53 FormatTimestamp: formatTimestampUtcRfc3339,
54 })
55 } else {
56 writers = append(writers, os.Stderr)
57 }
58 }
59 mw := io.MultiWriter(writers...)
60 secretAwareWriter := secrets.NewSecretAwareWriter(mw, secretAwareRedactor)
61 log.Logger = zerolog.New(secretAwareWriter).Level(zerologLevel).With().Str("module", "cli").Str("invocation_id", invocationUUID.String()).Timestamp().Logger()
62 if env.TenantID() != "" {
63 log.Logger = log.Logger.With().Str("tenant_id", env.TenantID()).Logger()
64 }
65 return logFile, nil
66}

Calls 4

ErrorfMethod · 0.80
CloseMethod · 0.65
StringMethod · 0.45
LoggerMethod · 0.45