最近我发现自己用 Express 搭建的网站突然响应变慢,服务器负载莫名其妙地升高。一开始我还以为是代码优化问题,但看了几天后隐约感觉不对劲——流量突然暴增,但 uv 并没有明显增长。
这种情况显然是遭遇了异常访问,要么是人为高频刷新,要么是爬虫抓取。
问题是,这个网站最初只是为了学习 Node.js 搭建的,为了简化维护,一直没有记录访问日志,导致现在无法追溯问题。但遇到这种情况,只能紧急添加日志功能,才能揪出背后的“始作俑者”。
一、Trae:救急神器登场
之前尝试过几款 AI 编程工具,但总会遇到各种限制,要么网络问题,要么额度太少不够用。
最近体验了字节出品的国产 AI IDE——Trae,主打AI 编程辅助。除了内置 deepseek R1、V3、v3-0324 和 doubao1.5pro,同时支持自定义模型,最重要的是免费。本周又有大功能更新,支持了 MCP 和自定义智能体。
本文记录下我是如何用它快速给 Express 应用集成日志系统,替代手动查阅 morgan 文档的过程。
二、实战:逐步完善Express日志功能
步骤一:快速添加基础日志
先不管三七二十一,把最基础的请求日志加上,至少能在控制台看到是谁在访问了。
打开项目中的 app.js 文件,然后在 Trae 的 AI 面板里输入:
复制加上日志中间件
不到2秒,Trae 就理解了我的需求,并给出了解决方案:
首先提示需要安装 morgan,点击"运行",Trae 直接就帮我安装了 morgan,甚至不需要手动 npm install,这真的惊讶到我了。
研究后发现,Trae 的智能体功能默认启用了 @Builder 模式。这个模式内置了完整的文件系统和终端环境,所以能直接执行 npm 命令。
回到正题,在帮我安装 morgan 后,Trae 继续生成了引入和使用 morgan 的代码:
点击"全部接受"后,代码就立刻应用到了文件中。运行应用后,每次有访问请求,控制台就会输出类似这样的日志:
基础日志有了,确实比我自己去翻文档快多了!但是,控制台日志不太方便分析,而且服务器一重启就没了。
步骤二:持久化到文件并实现日志轮换
接下来,我想把日志存到文件里,而且最好能按天分割,避免单个日志文件无限增大。
在此之前,我希望 Trae 生成的代码能符合我的个人风格,于是给它制定了一份规则:
再次提问,并且使用 #+能力名称调用了 Trae 上下文能力:联网搜索。
Trae分析了我的需求,建议使用 rotating-file-stream 库来实现日志轮换:
我当然选择接受建议:
重新运行应用,发现在 logs 目录下自动生成了 access.log 文件,而且日志内容比 console 格式更详细,包含了访问时间、HTTP 方法、URL、状态码、响应时间等信息。这下我就能随时查看历史访问记录了!
步骤三:区分访问日志和错误日志
混在一起的日志看起来有点乱,我希望能把正常访问和错误请求分开记录,方便排查问题。
Trae 的上下文能力真的很好用:
复制修改 morgan 配置,让 2xx/3xx 的成功请求日志写入 'access.log',而4xx/5xx 的错误请求日志写入 'error.log' ,两个日志都需要按天轮换 #Web
Trae理解了需求,给出了非常完善的方案:
这个方案考虑得相当周全,我测试了一下,分别访问了正常页面和不存在的页面,果然日志被正确地分别记录到了不同文件中。
步骤四:优化写入性能
既然我的网站可能面临大量访问,频繁写入日志可能会影响性能。我要求 Trae 帮我加上缓冲:
复制加上写入间隔来缓冲日志写入 #Web
Trae 给出了相关代码:
通过这些代码,日志会先缓存在内存中,然后每隔 5 秒才会写入磁盘,能有效减轻频繁 I/O 操作带来的性能压力,提高日志写入效率。
三、代码的提交
回过头看,从加第一行日志到实现文件轮换、错误分离,我惊讶地发现,自己几乎没怎么手写代码,大部分时候是在和 AI 对话、确认、然后点击“运行”、“全部接受”。连安装依赖库的命令都是 Trae 直接提供的,基本没怎么用到终端操作。这智能体自动化程度确实有点东西。
而且,这还只是用了 Trae 内置的通用 Agent。对于更复杂或个性化的场景,Trae 也提供了强大的自定义智能体功能。可以根据自己的使用场景和目标,通过 MCP (Model Context Protocol) 赋予智能体调用各种专属外部资源的能力,真正精细化地打磨 AI 的能力边界,让它变成你特定工作流中的专家。
既然如此,干脆就把代码提交的任务也交给它。
使用 @ 唤出智能体,在弹出的选项中选择 “创建智能体”,Trae 会进入创建智能体也没,这里我输入了名称 Git:
接下来就是给这个 Git 智能体扩展能力了,点击 “创建 MCP Servers” 就可以进入 MCP 市场了,在这里,我选择了 Github:
输入从 Github 获得的 Token 后就能在 MCP Servers 看到这个 MCP 了:
接下来回到自定义智能体页面,勾选之前添加的 Github MCP Server,点击 “创建”即可使用 Git 智能体了:
使用自定义智能体和之前一样,@ 即可:
至此,提交代码的操作也完美的不需要手写代码就能完成了。
四、揪出"元凶"
好了,日志系统完善了!经过几天的运行,我终于通过分析 access.log 和 error.log 发现了问题所在:部分是国外的垃圾蜘蛛不遵守 robots.txt 协议,短时间内频繁爬取网站,甚至在服务器返回 429 之后还在访问,已经全都丢 nginx 屏蔽了。还有几个固定 IP 也是短时间内频繁访问,而且请求模式非常规律,基本可以确定是爬虫了。
接下来就是针对性地做一些防护措施,比如添加速率限制、IP 黑名单等,不过具体的反爬策略就不展开了,防止被反反爬,重点是日志帮我定位了问题源头。
五、Trae:真 AI 工程师的实力
这次用 Trae IDE 来给 Express 应用加日志功能,整个体验下来效率提升非常明显。从最基础的需求到逐步完善的过程中,AI都能给出准确的代码建议和完整的解决方案。
特别喜欢它的智能体(@Agent)对话模式和上下文理解能力,可以直接针对我的代码提问和修改,比单纯地复制粘贴代码片段要智能得多。它能理解我当前的代码结构,并基于此给出恰当的建议。
对于像我这样偶尔写写后端的开发者来说,可以快速实现功能而不必花太多时间查文档;对于专业的开发者,它也能在方案调研、代码重构、处理复杂配置时提供很大帮助。比如通过#Web搜索最新的库用法,或者通过自定义 Agent、配置Rules 来统一规范等,都能节省不少时间。
不知道是运气好 Trae 强大,这次 AI 给的代码都不需要微调一下就能完美符合我的项目,大大减少了查文档和写样板代码的时间。
对了,以前用过 MarsCode 编程助手的朋友注意了,现在它更名为 Trae 插件了,用 Vscode 的同学也可以直接搜索 Trae 安装。
六、结语
总的来说,Trae IDE 是一个值得开发者尝试的 AI 编程助手,就我个人而言,它非常值得使用。
感兴趣的朋友可以去官网 https://sourl.cn/ymmfvS 下载体验一下,是完全免费的。