---
title: "日志"
description: "Nuxt Kit 提供了一组实用工具，帮助你处理日志。这些函数允许你记录带有额外功能的消息。"
canonical_url: "https://nuxt.zhcndoc.com/docs/4.x/api/kit/logging"
---
# 日志

> Nuxt Kit 提供了一组实用工具，帮助你处理日志。这些函数允许你记录带有额外功能的消息。

Nuxt 提供了一个日志实例，你可以使用它记录带有额外功能的消息。`useLogger` 允许你获取一个日志实例。

## `useLogger`

返回一个日志实例。它在底层使用 [consola](https://github.com/unjs/consola)。

### 用法

```ts twoslash
import { defineNuxtModule, useLogger } from '@nuxt/kit'

export default defineNuxtModule({
  setup (options, nuxt) {
    const logger = useLogger('my-module')

    logger.info('Hello from my module!')
  },
})
```

### 类型

```ts
function useLogger (tag?: string, options?: NuxtLoggerOptions): NuxtLogger
```

### 参数

**`tag`**：用于在所有日志消息后添加的标签，显示在时间戳右侧。

**`options`**：日志选项，例如 `level`、`reporters`、`defaults` 和 `formatOptions`。

### 示例

```ts twoslash
import { defineNuxtModule, useLogger } from '@nuxt/kit'

export default defineNuxtModule({
  setup (options, nuxt) {
    const logger = useLogger('my-module', { level: options.quiet ? 0 : 3 })

    logger.info('Hello from my module!')
  },
})
```

## `useTerminal`

返回一组用于与用户终端交互的原语。当 Nuxt 在交互式宿主环境中运行时，例如 `nuxt dev` 终端 UI，提示、任务和通知会交给该环境处理，因此可以在同一位置进行响应和渲染。否则，它们会回退到日志记录。

### 用法

```ts twoslash
declare function runPackageInstall (name: string): Promise<void>
// ---cut---
import { defineNuxtModule, useTerminal } from '@nuxt/kit'

export default defineNuxtModule({
  async setup () {
    const terminal = useTerminal()

    const install = await terminal.prompt('Do you want to install `my-module`?', { type: 'confirm' })
    if (!install) {
      return
    }

    const task = terminal.startTask('Installing `my-module`...')
    // run your actual task
    await runPackageInstall('my-module')
    task.stop('Installed `my-module`')
  },
})
```

### 类型

```ts
function useTerminal (): NuxtTerminal

interface NuxtTerminal {
  readonly interactive: boolean
  withTerminal: <T>(work: () => Promise<T>) => Promise<T>
  prompt: (message: string, options?: NuxtPromptOptions) => Promise<any>
  startTask: (label: string) => NuxtTerminalTask
  notify: (notification: NuxtTerminalNotification) => NuxtTerminalNotice
}
```

### 属性

**`interactive`**：是否存在交互式宿主环境。当其为 `false` 时，以下原语会改为记录到当前进程流。

**`withTerminal`**：在 `work` 执行期间借用终端，暂停任何宿主 UI 并释放 `stdin`。当你需要直接写入终端或从 `stdin` 读取时使用它。并发调用会被串行处理，而在借用期间发起的嵌套调用会立即运行。

**`prompt`**：向用户提问，并在提示处于打开状态期间借用终端。它接受与 `logger.prompt` 相同的选项。

**`startTask`**：启动一个长时间运行的任务，并在可用时将其渲染到宿主环境的状态界面上。使用 `task.stop(message?, outcome?)` 完成任务，或使用 `task.update(label)` 更改其标签。

**`notify`**：显示一条消息，并将其保留在屏幕上，直到用户确认该消息或调用 `notice.dismiss()`。`notice.dismissed` 会在通知消失后完成。

---

- [源码](https://github.com/nuxt/nuxt/blob/main/packages/kit/src/logger.ts)


## Sitemap

See the full [sitemap](https://nuxt.zhcndoc.com/sitemap.md) for all pages.
