Skip to content

DoooReyn/web-logger

Repository files navigation

WebLogger

一个高性能的 HTTP 日志服务器,支持按客户端分类存储日志。

功能特性

  • HTTP API 接收日志
  • 按客户端 IP 地址分类存储日志
  • 文件流写入,高性能
  • 自动日志轮转(默认 10MB)
  • 日志文件自动清理(默认保留 10 天)
  • 环境变量配置
  • CORS 跨域支持
  • 优雅关闭支持

快速开始

安装依赖

npm install

启动服务器

# 开发模式
npm run dev

# 生产模式
npm run build
npm start

服务器默认监听 3012 端口。

API 使用

发送日志

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors