全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 5 分钟 ✍️ juanwangdev

Node.js 日志记录基础(console)

console 是 Node.js 最基础的日志工具。

基本方法

输出方法

JavaScript
console.log('普通日志');
console.info('信息日志');
console.warn('警告日志');
console.error('错误日志');
console.debug('调试日志');

输出目标

方法stdout/stderr
log, info, debugstdout(标准输出)
warn, errorstderr(标准错误)

格式化输出

占位符

JavaScript
// %s - 字符串
console.log('用户: %s', '张三');

// %d - 数字
console.log('年龄: %d', 25);

// %i - 整数
console.log('数量: %i', 3.14);  // 输出 3

// %f - 浮点数
console.log('价格: %f', 99.9);

// %j - JSON
console.log('对象: %j', { name: '张三' });

// %o - 对象(详细)
console.log('对象: %o', { name: '张三' });

// %% - 百分号
console.log('进度: 50%%');

多参数

JavaScript
console.log('用户:', '张三', '年龄:', 25);
console.log('数据:', { id: 1 }, [1, 2, 3]);

对象输出

console.dir

JavaScript
const obj = { name: '张三', nested: { a: { b: { c: 1 } } } };

// 深度输出
console.dir(obj, { depth: null });  // 无限深度
console.dir(obj, { depth: 2 });     // 2层深度
console.dir(obj, { colors: true }); // 彩色输出

表格输出

console.table

JavaScript
const users = [
  { name: '张三', age: 25, city: '北京' },
  { name: '李四', age: 30, city: '上海' }
];

console.table(users);

// 指定列
console.table(users, ['name', 'age']);

// 对象输出
console.table({ a: 1, b: 2, c: 3 });

计时功能

console.time/timeEnd

JavaScript
console.time('耗时');
// ... 执行代码
for (let i = 0; i < 1e6; i++) {}
console.timeEnd('耗时');  // 输出: 耗时: 2.123ms

多个计时器

JavaScript
console.time('步骤1');
step1();
console.timeEnd('步骤1');

console.time('步骤2');
step2();
console.timeEnd('步骤2');

计数功能

console.count/countReset

JavaScript
console.count('调用');   // 调用: 1
console.count('调用');   // 调用: 2
console.count('调用');   // 调用: 3
console.countReset('调用');
console.count('调用');   // 调用: 1

分组输出

console.group/groupEnd

JavaScript
console.group('用户信息');
console.log('姓名: 张三');
console.log('年龄: 25');
console.group('地址');
console.log('城市: 北京');
console.log('区: 朝阳');
console.groupEnd();
console.groupEnd();

折叠分组

JavaScript
console.groupCollapsed('详细信息');
console.log('内容1');
console.log('内容2');
console.groupEnd();

断言输出

console.assert

JavaScript
// 条件为 false 时输出
console.assert(1 === 2, '1 不等于 2');  // 输出错误
console.assert(1 === 1, '条件成立');     // 无输出

console.assert(false, { msg: '失败', code: 500 });

清屏

console.clear

JavaScript
console.clear();  // 清除终端输出

追踪输出

console.trace

JavaScript
function inner() {
  console.trace('调用追踪');
}

function outer() {
  inner();
}

outer();

// 输出调用栈
// Trace: 谈用追踪
//     at inner (file.js:2:11)
//     at outer (file.js:5:5)
//     at Object.<anonymous> (file.js:8:1)

重定向输出

输出到文件

JavaScript
// 通过重定向
// node app.js > output.log 2> error.log
// > 重定向 stdout
// 2> 重定向 stderr

// 或代码中重定向
const fs = require('fs');
const output = fs.createWriteStream('./output.log');
const error = fs.createWriteStream('./error.log');

const logger = new console.Console(output, error);
logger.log('写入文件');
logger.error('写入错误文件');

注意事项

  • console 输出到 stdout/stderr,不适合复杂日志管理
  • 生产环境使用 winston、pino 等专业框架
  • console.log 会阻塞事件循环,大量使用影响性能
  • 日志中避免敏感信息(密码、令牌)
  • 使用 pm2 或重定向收集日志文件

要点总结

  • console.log/info/warn/error 基本输出
  • 占位符 %s %d %j %o 格式化
  • console.table 表格输出对象数组
  • console.time/timeEnd 计时测量
  • console.trace 追踪调用栈

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js 日志级别(debug, info, warn, error)
下一篇 → Node.js 错误处理基础
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库