返回顶部
c

cuihua-logger翠花日志

|

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
106
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

cuihua-logger

cuihua-logger - 生产级日志记录 📝

借助智能结构化日志,更快地调试。

一个AI驱动的日志助手,能够自动:

  • - 📝 生成带有适当上下文的结构化日志
  • 🎯 选择合适的日志级别(debug、info、warn、error)
  • 📊 添加性能指标和时间记录
  • 🔍 检测关键路径中缺失的日志
  • 优化生产环境的日志输出

🎯 为什么选择 cuihua-logger?

存在的问题

  • - ❌ 到处都是 console.log()
  • ❌ 没有结构,难以搜索
  • ❌ 日志级别错误(所有内容都是info)
  • ❌ 缺少上下文(哪个用户?哪个请求?)
  • ❌ 生产环境中的性能开销

cuihua-logger 解决了所有这些问题。



🚀 快速开始

分析日志覆盖范围

检查 src/ 中的日志覆盖范围

添加结构化日志

为 getUserById 函数添加日志

生成性能日志

为 API 端点添加性能日志


🎨 功能特性

1. 结构化日志 ✨

javascript
// ❌ 之前 - 非结构化
async function getUserById(id) {
console.log(正在获取用户:, id);
const user = await db.query(SELECT * FROM users WHERE id = $1, [id]);
console.log(找到用户:, user);
return user;
}

// ✅ 之后 - 结构化
async function getUserById(id) {
logger.info(正在获取用户, {
userId: id,
operation: getUserById
});

const startTime = Date.now();
const user = await db.query(SELECT * FROM users WHERE id = $1, [id]);
const duration = Date.now() - startTime;

logger.info(用户获取成功, {
userId: id,
operation: getUserById,
duration,
found: !!user
});

return user;
}

2. 智能日志级别 🎯

javascript
// 基于上下文的自动级别选择

logger.debug(缓存命中, { key, ttl }); // 仅开发环境

logger.info(用户登录, { userId, ip }); // 重要事件

logger.warn(速率限制即将达到, {
userId,
current: 95,
limit: 100
}); // 潜在问题

logger.error(支付失败, {
orderId,
error: error.message,
stack: error.stack
}); // 严重错误

3. 性能日志 ⚡

javascript
async function fetchData() {
const timer = logger.startTimer();

const data = await expensiveOperation();

timer.done({ level: info, message: 操作完成 });

return data;
}

// 输出:操作完成 duration=1234ms

4. 请求追踪 🔍

javascript
app.use((req, res, next) => {
req.requestId = generateId();
req.logger = logger.child({
requestId: req.requestId,
method: req.method,
path: req.path
});

req.logger.info(请求开始);

res.on(finish, () => {
req.logger.info(请求完成, {
statusCode: res.statusCode,
duration: Date.now() - req.startTime
});
});

next();
});



📋 使用示例

示例1:为函数添加日志

用户:为 processOrder 函数添加日志

生成结果
javascript
async function processOrder(orderId, items) {
logger.info(正在处理订单, { orderId, itemCount: items.length });

try {
// 验证
if (!orderId || !items.length) {
logger.warn(无效的订单数据, { orderId, items });
throw new ValidationError(无效订单);
}

// 创建订单
const order = await createOrder(orderId, items);
logger.info(订单已创建, { orderId, orderNumber: order.number });

// 处理支付
const payment = await processPayment(order);
logger.info(支付已处理, {
orderId,
paymentId: payment.id,
amount: payment.amount
});

return order;

} catch (error) {
logger.error(订单处理失败, {
orderId,
error: error.message,
stack: error.stack
});
throw error;
}
}

示例2:API端点日志

javascript
app.post(/api/users, async (req, res) => {
const { logger } = req;

logger.info(正在创建用户, { email: req.body.email });

try {
const user = await userService.create(req.body);

logger.info(用户创建成功, {
userId: user.id,
email: user.email
});

res.status(201).json(user);

} catch (error) {
logger.error(用户创建失败, {
email: req.body.email,
error: error.message
});

res.status(500).json({ error: 创建用户失败 });
}
});



⚙️ 日志配置

Winston

javascript
import winston from winston;

const logger = winston.createLogger({
level: process.env.LOG_LEVEL || info,
format: winston.format.combine(
winston.format.timestamp(),
winston.format.errors({ stack: true }),
winston.format.json()
),
transports: [
new winston.transports.File({ filename: error.log, level: error }),
new winston.transports.File({ filename: combined.log })
]
});

Pino(最快)

javascript
import pino from pino;

const logger = pino({
level: process.env.LOG_LEVEL || info,
timestamp: pino.stdTimeFunctions.isoTime,
formatters: {
level: (label) => ({ level: label })
}
});



📊 日志级别


级别使用场景示例
debug开发调试logger.debug(缓存未命中, { key })
info
重要事件 | logger.info(用户登录, { userId }) |
| warn | 潜在问题 | logger.warn(速率限制即将达到, { userId }) |
| error | 需要关注的错误 | logger.error(支付失败, { orderId }) |


💰 定价

免费版

  • - ✅ 基本日志生成
  • ✅ 最多10个文件

专业版($8/月)

  • - ✅ 无限文件
  • ✅ 性能日志
  • ✅ 请求追踪
  • ✅ CI/CD集成

企业版($59/月)

  • - ✅ 团队策略
  • ✅ 日志聚合设置
  • ✅ 自定义格式化器

📚 最佳实践

  1. 1. 始终记录带有上下文的错误
  2. 使用结构化日志(对象,而非字符串)
  3. 包含请求ID以便追踪
  4. 不要记录敏感数据(密码、令牌)
  5. 使用适当的日志级别

📜 许可证

MIT



🙏 致谢

由翠花(Cuihua)用 🌸 打造



用 🌸 制作 | 翠花系列 | ClawHub Pioneer

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 cuihua-logger-1776056529 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 cuihua-logger-1776056529 技能

通过命令行安装

skillhub install cuihua-logger-1776056529

下载

⬇ 下载 cuihua-logger v1.0.0(免费)

文件大小: 5.72 KB | 发布时间: 2026-4-14 14:22

v1.0.0 最新 2026-4-14 14:22
📝 First release! AI-powered structured logging for production systems.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部