📜 彩色日志使用指南:让控制台变身彩虹乐园 🎨
🌈 概述
彩色日志通过 ANSI 转义码 + 颜文字系统,为枯燥的控制台信息赋予情感表达能力。本文档以 Node.js
场景为例,演示如何打造可爱又实用的日志系统。
🎨 基础颜色代码表
颜色名称 | 前景色代码 | 背景色代码 | 示例 |
---|---|---|---|
黑色 | \x1b[30m | \x1b[40m | \x1b[30m◼ 暗夜模式启动◼\x1b[0m |
红色 | \x1b[31m | \x1b[41m | \x1b[31m❤ 严重错误!\x1b[0m |
绿色 | \x1b[32m | \x1b[42m | \x1b[32m✓ 编译成功~\x1b[0m |
黄色 | \x1b[33m | \x1b[43m | \x1b[33m⚠ 缓存即将过期\x1b[0m |
蓝色 | \x1b[34m | \x1b[44m | \x1b[34m🌊 正在连接数据库\x1b[0m |
品红 | \x1b[35m | \x1b[45m | \x1b[35m🌸 用户登录成功\x1b[0m |
青色 | \x1b[36m | \x1b[46m | \x1b[36m💎 发现新版本\x1b[0m |
白色 | \x1b[37m | \x1b[47m | \x1b[37m☁ 进入待机状态\x1b[0m |
重置样式:\x1b[0m
(必须放在颜色代码末尾)
✨ 高级样式组合
1. 混合样式语法
// 格式:\x1b[样式代码;颜色代码m
console.log(`\x1b[1;4;36m📘\x1b[0m 正在被少女分析中...`);
输出效果:加粗 + 下划线 + 青色文字
2. 常用样式代码
样式名称 | 代码 | 可爱应用场景 |
---|---|---|
加粗 | 1 | \x1b[1;35m🌟重要通知\x1b[0m |
下划线 | 4 | \x1b[4;33m⚠警告!\x1b[0m |
闪烁 | 5 | \x1b[5;31m❗紧急事件\x1b[0m |
反色 | 7 | \x1b[7;32m✅操作成功\x1b[0m |
😺 颜文字情感系统
1. 状态对应表
日志级别 | 推荐颜文字 | 应用示例 |
---|---|---|
SUCCESS | ٩(ˊᗜˋ*)و (≧ω≦)ゞ | \x1b[32m٩(ˊᗜˋ*)و 缓存清理完成!释放 ${size}MB 空间~\x1b[0m |
INFO | ฅ^•ﻌ•^ฅ ( •̀ ω •́ )✧ | \x1b[36mฅ^•ﻌ•^ฅ 发现 ${count} 个待处理事项\x1b[0m |
WARN | (´•︵•\ ) (,,・﹏・,,)` | \x1b[33m(´•︵•\ ) 配置文件版本过旧,建议更新\x1b[0m` |
ERROR | (;´༎ຶД༎ຶ ) (つ Д`)` | \x1b[41m(;´༎ຶД༎ຶ ) 数据库连接失败!重试中…\x1b[0m` |
2. 动态颜文字生成器
function getEmoji(level) {
const emojis = {
success: ["(^∇^)", "✧*。٩(ˊᗜˋ)و✧*。", "♪(^∇^*)"],
error: ["(>_<)", "(T▽T)", "(πーπ)"],
};
return emojis[level][Math.floor(Math.random() * 3)];
}
// 使用示例
console.log(`${getEmoji("success")} 任务完成!`);
🚀 最佳实践
1. 日志分级配色方案
const LOG_COLORS = {
debug: "\x1b[37m", // 灰色
info: "\x1b[36m", // 青色
success: "\x1b[1;32m", // 亮绿色
warn: "\x1b[1;33m", // 亮黄色
error: "\x1b[1;31m", // 亮红色
};
function cuteLog(level, message) {
console.log(`${LOG_COLORS[level]}${getEmoji(level)} ${message}\x1b[0m`);
}
2. 动态进度条
function showProgress(percent) {
const bar = `[${"▓".repeat(percent / 2)}${"░".repeat(50 - percent / 2)}]`;
process.stdout.write(`\x1b[36m${bar} \x1b[35m${percent}%\x1b[0m\r`);
}
⚠️ 注意事项
终端兼容性检查
// 检测是否支持颜色输出 if (process.stdout.isTTY) { // 启用彩色日志 } else { // 回退到普通日志 }
颜色污染防护
- 必须使用
\x1b[0m
重置样式 - 避免嵌套超过 3 层颜色代码
- 在长文本中每 80 字符插入重置代码
- 必须使用
颜文字使用原则
- 关键日志:每个消息配 1 个颜文字
- 调试日志:每 5 条消息随机出现颜文字
- 错误日志:固定使用悲伤系颜文字
🌟 高级技巧
彩虹文字特效
function rainbowText(text) {
const colors = [31, 33, 32, 36, 34, 35]; // 红黄绿青蓝紫
return (
text
.split("")
.map((char, i) => `\x1b[${colors[i % colors.length]}m${char}`)
.join("") + "\x1b[0m"
);
}
// 使用示例
console.log(rainbowText("少女启动彩虹模式!"));