尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用log4js优雅管理多账号日志:拆解天翼网盘自动签到Cloud189Checkin的日志记录与汇总推送设计

如何用log4js优雅管理多账号日志:拆解天翼网盘自动签到Cloud189Checkin的日志记录与汇总推送设计 如何用log4js优雅管理多账号日志拆解天翼网盘自动签到Cloud189Checkin的日志记录与汇总推送设计【免费下载链接】Cloud189Checkin天翼网盘自动签到项目地址: https://gitcode.com/gh_mirrors/clo/Cloud189CheckinCloud189Checkin 是一个开源的天翼网盘自动签到脚本可以一次性登录多个账号完成每日签到并把每个账号的容量增长汇总推送到手机。多账号同时跑日志最容易乱。这篇文章带你拆解它如何用 log4js 实现一个账号一份日志、任务结束自动汇总推送的完整设计新手照着学就能给自己的多账号脚本配上干净的日志体系。一、先看场景多账号签到为什么会日志混乱Cloud189Checkin 启动时会从环境变量中读取任意数量的账号逐个执行签到任务账号由accounts.js从TY_USERNAME_1、TY_PASSWORD_1这类成对变量中解析也兼容TY_ACCOUNTSJSON 方式本地运行时也可以直接写在系统环境变量里如果所有账号共用一条日志流几十个账号的开始执行、签到成功、容量变化会互相穿插一旦某个账号报错基本没法快速定位。项目的解法藏在src/logger.js里。二、三套日志出口log4js 的 Appender 配置拆解src/logger.js只用了约 30 行配置就定义了三种日志出口AppenderAppender类型去向作用outconsole控制台实时查看格式[时间] [级别] 账号: 内容filemultiFile.logs/账号名.log每个账号独立成文件单文件上限 10MB保留 3 份压缩备份vcrrecording内存只记录推送模块事件供任务结束时回放再配合两个 category 把它们分开default所有账号日志同时写out和filepush推送日志只写out和vcr不落文件。核心思路一句话业务日志按账号分文件推送日志单独走内存通道互不污染。三、一个账号一个 LoggercategoryName 实现日志隔离在src/app.js的主流程里每个账号会拿到一个以自己名字命名的 Loggerconst logger log4js.getLogger(userName); logger.addContext(user, mask(userName, 3, 7));这里有两个巧妙之处Logger 名字就是账号名。file 这个 multiFile Appender 配置了property: categoryName日志会按 Logger 名称自动拆分文件——某个账号的日志只会出现在它自己的.log文件里天然隔离日志内容里是打码账号。src/utils.js中的mask(userName, 3, 7)会把手机号中间几位替换成*文件落盘和推送内容都不会泄露完整账号。签到过程中开始执行、个人签到任务: 获得 XXM 空间、执行完毕, 耗时 X.XX 秒以及最后的容量变化⬆️ 个人容量 / 家庭容量都会写进对应账号的日志。其中家庭容量对应的就是天翼网盘里的家庭管理空间四、任务收尾日志汇总 多通道推送最精彩的部分在src/app.js末尾。主流程结束后脚本不会直接退出而是做了一次日志大汇总delay(1000)等待异步的日志文件真正写完catLogs()读取.logs/下所有文件拼成一份完整的签到报告recording.replay()从内存通道取出所有推送成功/失败事件push(天翼云盘自动签到任务, 日志 推送事件)一键发出汇总通知recording.erase()cleanLogs()清空内存记录、删除本地日志文件。推送模块src/push/index.js支持 Server 酱、Telegram Bot、企业微信群机器人、WxPusher、PushPlus、Bark、ShowDoc 共 8 个通道配了环境变量就发送没配置自动跳过——同一份汇总日志可以多端收到。之所以每次跑完就删日志是因为签到任务是定时重复执行的每天一次。汇总推送 → 清理现场让日志的生命周期和任务完全对齐本地永远不会堆积文件。五、4 个可以直接借鉴的细节 按账号隔离getLogger(账号名) multiFile多账号脚本日志不串线敏感信息打码日志里只出现189****5716而不是完整手机号推送日志与业务日志分离推送结果走 recording 内存 Appender不污染账号日志最后还能回放拼进汇总报告日志随任务清理catLogs汇总 → 推送 →cleanLogs删除非常适合每日定时任务场景。小结Cloud189Checkin 用 log4js 的多 Appender 按账号 Logger 的组合完美适配了多账号天翼网盘自动签到场景日志分文件好排查、账号打码更安全、汇总推送让手机上直接看到每个账号的签到结果。依赖只需引入 log4js 一个包实现成本极低非常值得做多账号脚本的同学参考src/logger.js与src/app.js的实现。【免费下载链接】Cloud189Checkin天翼网盘自动签到项目地址: https://gitcode.com/gh_mirrors/clo/Cloud189Checkin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表