Console 控制台¶
Console 模块提供了标准的控制台日志输出功能。你可以使用它来输出不同级别的日志信息,帮助调试和监控脚本运行状态。
守护进程支持: 完全支持。在触发器模式下可正常运行,日志会被记录到系统日志中。
目录¶
- 快速开始
- API 参考
- console.log()
- console.error()
- console.warn()
- console.info()
- console.debug()
- console.clear()
- 完整示例
- 最佳实践
快速开始¶
使用 console 模块输出日志非常简单:
// 输出普通日志
console.log('Hello TrollScript!');
// 输出多个参数
console.log('用户:', 'Alice', '年龄:', 25);
// 输出对象
const user = { name: 'Bob', age: 30 };
console.log('用户信息:', user);
API 参考¶
console.log(...args)¶
输出普通日志信息。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
...args |
any |
否 | 要输出的内容,支持多个参数 |
返回: void
console.log('这是一条普通日志');
console.log('数值:', 42, '字符串:', 'hello');
console.log({ key: 'value', count: 10 });
console.error(...args)¶
输出错误日志信息。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
...args |
any |
否 | 要输出的错误内容 |
返回: void
console.error('发生错误:', error.message);
console.error('无法连接到服务器');
console.warn(...args)¶
输出警告日志信息。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
...args |
any |
否 | 要输出的警告内容 |
返回: void
console.warn('警告: 磁盘空间不足');
console.warn('API 调用次数接近限制');
console.info(...args)¶
输出信息日志。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
...args |
any |
否 | 要输出的信息内容 |
返回: void
console.info('脚本启动成功');
console.info('当前版本:', '1.0.0');
console.debug(...args)¶
输出调试日志信息。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
...args |
any |
否 | 要输出的调试内容 |
返回: void
console.debug('进入函数 processData');
console.debug('变量值:', someVariable);
console.clear()¶
清空控制台输出。
返回: void
console.clear();
完整示例¶
示例 1: 基础日志输出¶
// 不同级别的日志
console.log('这是普通日志');
console.info('这是信息日志');
console.warn('这是警告日志');
console.error('这是错误日志');
console.debug('这是调试日志');
示例 2: 输出复杂对象¶
const user = {
name: 'Alice',
age: 25,
hobbies: ['reading', 'coding'],
address: {
city: 'Beijing',
country: 'China'
}
};
console.log('用户信息:', user);
// 输出: 用户信息: {"name":"Alice","age":25,"hobbies":["reading","coding"],"address":{"city":"Beijing","country":"China"}}
示例 3: 调试脚本执行流程¶
console.log('=== 脚本开始执行 ===');
try {
console.debug('步骤 1: 读取配置文件');
const config = storage.read('config');
console.debug('步骤 2: 处理数据');
const result = processData(config);
console.info('处理完成,结果:', result);
} catch (error) {
console.error('执行失败:', error.message);
} finally {
console.log('=== 脚本执行结束 ===');
}
示例 4: 性能监控¶
const startTime = Date.now();
console.log('开始执行任务...');
// 执行一些操作
for (let i = 0; i < 1000; i++) {
// 模拟耗时操作
}
const endTime = Date.now();
const duration = endTime - startTime;
console.info(`任务完成,耗时: ${duration}ms`);
if (duration > 1000) {
console.warn('任务执行时间过长,建议优化');
}
示例 5: 条件日志输出¶
const DEBUG_MODE = true;
function debugLog(...args) {
if (DEBUG_MODE) {
console.debug('[DEBUG]', ...args);
}
}
debugLog('这条日志只在调试模式下显示');
debugLog('变量值:', someVariable);
最佳实践¶
1. 使用合适的日志级别¶
根据信息的重要性选择合适的日志级别:
// ✅ 正确
console.error('数据库连接失败'); // 错误
console.warn('缓存即将过期'); // 警告
console.info('用户登录成功'); // 信息
console.debug('变量值: x=10'); // 调试
// ❌ 错误
console.log('数据库连接失败'); // 应该用 error
2. 输出有意义的信息¶
日志应该包含足够的上下文信息:
// ✅ 正确
console.error('无法连接到 API:', apiUrl, '错误:', error.message);
// ❌ 错误
console.error('错误'); // 信息不足
3. 避免输出敏感信息¶
不要在日志中输出密码、密钥等敏感信息:
// ✅ 正确
console.log('用户登录:', username);
// ❌ 错误
console.log('用户登录:', username, '密码:', password);
4. 使用结构化日志¶
对于复杂的日志,使用对象格式:
// ✅ 正确
console.log('API 请求', {
method: 'POST',
url: '/api/users',
status: 200,
duration: '150ms'
});
// ❌ 较差
console.log('API 请求 POST /api/users 200 150ms');
5. 在生产环境控制日志输出¶
在生产环境中,可以通过配置控制日志级别:
const LOG_LEVEL = storage.read('logLevel') || 'info';
function shouldLog(level) {
const levels = ['debug', 'info', 'warn', 'error'];
const currentLevel = levels.indexOf(LOG_LEVEL);
const messageLevel = levels.indexOf(level);
return messageLevel >= currentLevel;
}
function log(level, ...args) {
if (shouldLog(level)) {
console[level](...args);
}
}
// 使用
log('debug', '这条日志可能不会显示');
log('error', '这条错误日志总是会显示');
6. 添加时间戳和标签¶
为日志添加时间戳和标签,便于追踪:
function logWithTimestamp(level, tag, ...args) {
const timestamp = new Date().toISOString();
console[level](`[${timestamp}] [${tag}]`, ...args);
}
logWithTimestamp('info', 'AUTH', '用户登录成功');
logWithTimestamp('error', 'DB', '数据库查询失败');
注意事项¶
- 对象输出: 对象和数组会自动使用
JSON.stringify格式化输出 - 多参数: 支持传入多个参数,会用空格连接
- 守护进程模式: 在 Daemon 模式下,日志会被记录到系统日志中,可以通过主应用查看
- 性能影响: 频繁的日志输出可能影响性能,在生产环境中应适当控制日志级别