📦 日志记录器
用于语义格式化控制台消息的封装日志记录器。
鼓励 Docusaurus 生态系统中包的作者使用此包以提供统一的日志格式。
API
它将单个对象作为默认导出导出:logger
。logger
具有以下属性
- 一些有用的颜色。
红色
黄色
绿色
粗体
暗淡
- 格式化程序。这些函数都具有签名
(msg: unknown) => string
。请注意,它们的实现没有保证。你只应关注它们的语义。path
:格式化文件路径。url
:格式化 URL。name
:格式化标识符。code
:格式化代码片段。subdue
:使文本变暗。num
:格式化数字。
interpolate
函数。它是一个模板字面量标记。语法如下。- 日志记录函数。所有日志记录函数都可以用作普通函数(类似于
console.log
家族,但只接受一个参数)或模板字面量标记。info
:打印信息。warn
:打印应引起注意的警告。error
:打印错误(不一定停止程序),表示严重问题。success
:打印成功消息。
report
函数。它接受一个ReportingSeverity
值(ignore
、log
、warn
、throw
)并根据严重程度报告消息。
关于
error
格式化程序的一句话请注意,即使 error
消息没有挂起程序,也可能会造成混淆。当用户检查日志并发现 [ERROR]
时,即使构建成功,他们也会认为出了问题。谨慎使用。
Docusaurus 仅在打印消息之前立即抛出错误,或用户将 onBrokenLink
等的报告严重性设置为 "error"
时使用 logger.error
。
此外,warn
和 error
将为整个消息着色以引起更多关注。如果你正在打印有关错误的大块帮助文本,最好使用 logger.info
。
使用模板字面量标记
模板字面量标记会评估嵌入的模板和表达式。interpolate
返回一个新的字符串,而其他日志记录函数会打印它。以下是典型的用法
import logger from '@docusaurus/logger';
logger.info`Hello name=${name}! You have number=${money} dollars. Here are the ${
items.length > 1 ? 'items' : 'item'
} on the shelf: ${items}
To buy anything, enter code=${'buy x'} where code=${'x'} is the item's name; to quit, press code=${'Ctrl + C'}.`;
嵌入的表达式可以选择性地在 [a-z]+=
(几个小写字母,后跟一个等号,直接位于嵌入表达式之前)形式的标志之前。如果表达式前面没有标志,则按原样打印出来。否则,它将使用以下格式化程序之一进行格式化
path=
:path
url=
:url
name=
:name
code=
:code
subdue=
:subdue
number=
:num
如果表达式是一个数组,则通过 `\n- ${array.join('\n- ')}\n`
进行格式化(注意它会自动获得一个前导换行符)。每个成员都是单独格式化的,并且项目符号没有格式化。因此,你会看到上述消息以如下方式打印