一个高性能的 HTTP 日志服务器,支持按客户端分类存储日志。
- HTTP API 接收日志
- 按客户端 IP 地址分类存储日志
- 文件流写入,高性能
- 自动日志轮转(默认 10MB)
- 日志文件自动清理(默认保留 10 天)
- 环境变量配置
- CORS 跨域支持
- 优雅关闭支持
npm install# 开发模式
npm run dev
# 生产模式
npm run build
npm start服务器默认监听 3012 端口。
curl -X POST http://localhost:3012/api/log \
-H "Content-Type: application/json" \
-d '{
"level": "info",
"message": "用户登录成功",
"metadata": {
"userId": 123,
"action": "login"
}
}'curl http://localhost:3012/health可以通过环境变量或 .env 文件配置:
# 服务器端口(默认: 3012)
PORT=3012
# 日志目录(默认: ./logs)
LOG_DIR=./logs
# 单个日志文件最大大小(字节,默认: 10485760 = 10MB)
MAX_FILE_SIZE=10485760
# 日志保留天数(默认: 10)
RETENTION_DAYS=10
# 请求体最大大小(默认: 10mb)
MAX_BODY_SIZE=10mb
# 是否启用控制台输出(默认: true)
ENABLE_CONSOLE=true
# CORS 配置(允许的源,默认: * 允许所有源)
CORS_ORIGIN=*日志文件按客户端 IP 和日期进行分类:
logs/
├── 127.0.0.1-2025-12-13.log # 来自 127.0.0.1 的日志
├── 192.168.1.100-2025-12-13.log # 来自 192.168.1.100 的日志
└── unknown-2025-12-13.log # 未知 IP 或服务器自身的日志
每条日志以 JSON 格式存储:
{"timestamp":"2025-12-13T15:58:14.639Z","level":"info","message":"用户登录成功","metadata":{"userId":123,"action":"login"}}支持以下日志级别:
info- 信息日志warn- 警告日志error- 错误日志debug- 调试日志
- 使用文件流写入,避免频繁的文件打开/关闭操作
- 异步写入,不阻塞 HTTP 响应
- 支持高并发(默认可处理超过 20 个并发客户端)
src/
├── index.ts # WebLogger 主类
├── server.ts # HTTP 服务器入口
├── logger/
│ ├── types.ts # 类型定义
│ └── fileLogger.ts # 文件日志记录器(文件流实现)
├── routes/
│ └── log.ts # 日志 API 路由
├── middleware/
│ └── errorHandler.ts # 错误处理
└── config/
└── loggerConfig.ts # 默认配置
# 代码检查
npm run lint
# 代码格式化
npm run format
# 自动修复代码格式
npm run lint:fix
# 运行测试
npm test
# 监视模式运行测试
npm run test:watch