Home / Function/ createLogger() — vite Function Reference

createLogger() — vite Function Reference

Architecture documentation for the createLogger() function in logger.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  04e3b119_ae40_14a9_42ce_3951d83fc60d["createLogger()"]
  eca93de5_04d5_dda0_7ae6_2ceb5379ea81["logger.ts"]
  04e3b119_ae40_14a9_42ce_3951d83fc60d -->|defined in| eca93de5_04d5_dda0_7ae6_2ceb5379ea81
  58c4a210_68fe_1b4d_ed49_d59203f97ef1["resolveConfig()"]
  58c4a210_68fe_1b4d_ed49_d59203f97ef1 -->|calls| 04e3b119_ae40_14a9_42ce_3951d83fc60d
  53f0a505_9626_e709_c92b_e7f00c6e0bd7["loadConfigFromFile()"]
  53f0a505_9626_e709_c92b_e7f00c6e0bd7 -->|calls| 04e3b119_ae40_14a9_42ce_3951d83fc60d
  5db25367_d823_be14_869d_fc9affb91c51["runConfigHook()"]
  5db25367_d823_be14_869d_fc9affb91c51 -->|calls| 04e3b119_ae40_14a9_42ce_3951d83fc60d
  b31a0f8d_a16d_4f07_c9e2_733cb9d546cd["getTimeFormatter()"]
  04e3b119_ae40_14a9_42ce_3951d83fc60d -->|calls| b31a0f8d_a16d_4f07_c9e2_733cb9d546cd
  62cf2425_32ce_8e8e_500a_902dc166b097["clearScreen()"]
  04e3b119_ae40_14a9_42ce_3951d83fc60d -->|calls| 62cf2425_32ce_8e8e_500a_902dc166b097
  style 04e3b119_ae40_14a9_42ce_3951d83fc60d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/logger.ts lines 68–166

export function createLogger(
  level: LogLevel = 'info',
  options: LoggerOptions = {},
): Logger {
  if (options.customLogger) {
    return options.customLogger
  }

  const loggedErrors = new WeakSet<Error | RollupError>()
  const {
    prefix = '[vite]',
    allowClearScreen = true,
    console = globalThis.console,
  } = options
  const thresh = LogLevels[level]
  const canClearScreen =
    allowClearScreen && process.stdout.isTTY && !process.env.CI
  const clear = canClearScreen ? clearScreen : () => {}

  function format(type: LogType, msg: string, options: LogErrorOptions = {}) {
    if (options.timestamp) {
      let tag = ''
      if (type === 'info') {
        tag = colors.cyan(colors.bold(prefix))
      } else if (type === 'warn') {
        tag = colors.yellow(colors.bold(prefix))
      } else {
        tag = colors.red(colors.bold(prefix))
      }
      const environment = options.environment ? options.environment + ' ' : ''
      return `${colors.dim(getTimeFormatter().format(new Date()))} ${tag} ${environment}${msg}`
    } else {
      return msg
    }
  }

  function output(type: LogType, msg: string, options: LogErrorOptions = {}) {
    if (thresh >= LogLevels[type]) {
      const method = type === 'info' ? 'log' : type

      if (options.error) {
        loggedErrors.add(options.error)
      }
      if (canClearScreen) {
        if (type === lastType && msg === lastMsg) {
          sameCount++
          clear()
          console[method](
            format(type, msg, options),
            colors.yellow(`(x${sameCount + 1})`),
          )
        } else {
          sameCount = 0
          lastMsg = msg
          lastType = type
          if (options.clear) {
            clear()
          }
          console[method](format(type, msg, options))
        }
      } else {
        console[method](format(type, msg, options))
      }
    }
  }

  const warnedMessages = new Set<string>()

  const logger: Logger = {
    hasWarned: false,
    info(msg, opts) {
      output('info', msg, opts)
    },
    warn(msg, opts) {
      logger.hasWarned = true
      output('warn', msg, opts)
    },
    warnOnce(msg, opts) {
      if (warnedMessages.has(msg)) return
      logger.hasWarned = true
      output('warn', msg, opts)

Domain

Subdomains

Frequently Asked Questions

What does createLogger() do?
createLogger() is a function in the vite codebase, defined in packages/vite/src/node/logger.ts.
Where is createLogger() defined?
createLogger() is defined in packages/vite/src/node/logger.ts at line 68.
What does createLogger() call?
createLogger() calls 2 function(s): clearScreen, getTimeFormatter.
What calls createLogger()?
createLogger() is called by 3 function(s): loadConfigFromFile, resolveConfig, runConfigHook.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free