BongoCat日志搜索程序:正则表达式与高级筛选

news/2025/10/27 16:40:48/文章来源:https://www.cnblogs.com/gccbuaa/p/19169520

BongoCat日志搜索工具:正则表达式与高级筛选

【免费下载链接】BongoCat让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力!【免费下载链接】BongoCat 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat

痛点直击:日志搜索效率低下的困境

你是否还在为BongoCat的日志分析而烦恼?当呆萌可爱的BongoCat在你的屏幕上活蹦乱跳时,每一次键盘敲击和鼠标移动都被记录在日志中。然而,面对海量的日志数据,如何快速定位关键信息成为许多用户的痛点。本文将详细介绍如何利用正则表达式和高级筛选功能,打造专属于BongoCat的日志搜索工具,让你轻松驾驭日志分析。

读完本文,你将获得:

  • 掌握BongoCat日志的结构和关键参数
  • 学会使用正则表达式精准匹配日志内容
  • 了解高级筛选功能的实现原理和应用场景
  • 能够自定义日志搜索工具,满足个性化需求

BongoCat日志系统概述

日志产生机制

BongoCat的日志数据主要来源于用户的输入设备操作,包括键盘按键、鼠标移动和点击、游戏手柄操作等。这些操作通过事件监听机制被捕获,并转化为结构化的日志数据。

// 键盘事件处理示例(src/composables/useDevice.ts)
useTauriListen(LISTEN_KEY.DEVICE_CHANGED, ({ payload }) => {const { kind, value } = payload;if (kind === 'KeyboardPress' || kind === 'KeyboardRelease') {const nextValue = getSupportedKey(value);if (!nextValue) return;if (kind === 'KeyboardPress') {return handlePress(nextValue);}return handleRelease(nextValue);}// 鼠标和其他事件处理...
});

日志数据结构

BongoCat的日志数据包含以下关键信息:

  • 时间戳(timestamp):记录事件发生的时间
  • 事件类型(eventType):如键盘按键、鼠标移动、游戏手柄操作等
  • 设备信息(deviceInfo):记录事件来源设备
  • 参数数据(parameters):具体的事件参数,如按键名称、坐标位置等

日志存储方式

目前BongoCat的日志主要存储在内存中,用于实时驱动角色动画。对于需要持久化的日志数据,可通过扩展实现本地文件存储或数据库存储。

正则表达式在日志搜索中的应用

正则表达式基础

正则表达式(Regular Expression,正则)是一种用于匹配字符串模式的工具。在日志搜索中,正则表达式可以帮助我们快速定位包含特定模式的日志条目。

常用的正则表达式元字符:

  • .:匹配任意单个字符
  • *:匹配前面的字符零次或多次
  • +:匹配前面的字符一次或多次
  • ?:匹配前面的字符零次或一次
  • []:匹配括号内的任意一个字符
  • ():分组匹配
  • ^:匹配字符串的开始
  • $:匹配字符串的结束

BongoCat日志专用正则模式

1. 键盘事件匹配

匹配所有键盘按键事件:

Keyboard(Press|Release):\s*(\w+)

匹配特定按键(如Enter键):

KeyboardPress:\s*Enter
2. 鼠标事件匹配

匹配鼠标点击事件:

Mouse(Press|Release):\s*(Left|Right|Middle)

匹配鼠标移动事件:

MouseMove:\s*x=(\d+),\s*y=(\d+)
3. 游戏手柄事件匹配

匹配游戏手柄摇杆事件:

GamepadAxisChanged:\s*(Left|Right)Stick(X|Y):\s*(-?\d+\.\d+)

匹配游戏手柄按钮事件:

GamepadButtonChanged:\s*(\w+):\s*(0|1)

正则表达式实战示例

示例1:查找所有按键按下事件
// 使用正则表达式匹配所有按键按下事件
const pressRegex = /KeyboardPress:\s*(\w+)/g;
const matches = logContent.match(pressRegex);
if (matches) {matches.forEach(match => {console.log("按键按下事件:", match);});
}
示例2:提取鼠标移动轨迹
// 提取鼠标移动的坐标数据
const moveRegex = /MouseMove:\s*x=(\d+),\s*y=(\d+)/g;
let match;
const coordinates = [];
while ((match = moveRegex.exec(logContent)) !== null) {coordinates.push({ x: parseInt(match[1]), y: parseInt(match[2]) });
}
console.log("鼠标移动轨迹:", coordinates);

BongoCat高级筛选功能设计

多维度筛选系统

BongoCat日志搜索工具的高级筛选功能可以从以下几个维度进行设计:

mermaid

筛选功能实现原理

1. 基于事件类型的筛选
// 事件类型筛选实现
function filterByEventType(logs, eventType) {return logs.filter(log => {return log.eventType === eventType;});
}
2. 基于时间范围的筛选
// 时间范围筛选实现
function filterByTimeRange(logs, startTime, endTime) {return logs.filter(log => {const logTime = new Date(log.timestamp).getTime();return logTime >= startTime && logTime <= endTime;});
}
3. 组合筛选条件
// 组合多个筛选条件
function combinedFilter(logs, filters) {return logs.filter(log => {// 事件类型筛选if (filters.eventType && log.eventType !== filters.eventType) {return false;}// 时间范围筛选if (filters.timeRange) {const logTime = new Date(log.timestamp).getTime();const { startTime, endTime } = filters.timeRange;if (logTime < startTime || logTime > endTime) {return false;}}// 其他筛选条件...return true;});
}

高级筛选UI设计

mermaid

日志搜索工具实现

工具架构设计

mermaid

核心功能代码实现

1. 日志搜索工具类
class LogSearchTool {private logs: LogEntry[];constructor(logs: LogEntry[]) {this.logs = logs;}// 正则搜索regexSearch(pattern: string, flags: string = 'g'): LogEntry[] {const regex = new RegExp(pattern, flags);return this.logs.filter(log => {return regex.test(log.content);});}// 高级筛选advancedFilter(filters: FilterOptions): LogEntry[] {return this.logs.filter(log => {// 应用所有筛选条件if (filters.eventType && log.eventType !== filters.eventType) return false;if (filters.device && log.device !== filters.device) return false;if (filters.startTime && new Date(log.timestamp) < new Date(filters.startTime)) return false;if (filters.endTime && new Date(log.timestamp) > new Date(filters.endTime)) return false;// 如果有正则模式,应用正则筛选if (filters.regexPattern) {const regex = new RegExp(filters.regexPattern, filters.regexFlags);if (!regex.test(log.content)) return false;}return true;});}// 日志分析 - 统计按键频率analyzeKeyFrequency(): Record {const frequency: Record = {};this.logs.forEach(log => {const keyMatch = log.content.match(/KeyboardPress:\s*(\w+)/);if (keyMatch && keyMatch[1]) {const key = keyMatch[1];frequency[key] = (frequency[key] || 0) + 1;}});// 按频率排序const sortedFrequency = Object.entries(frequency).sort(([, a], [, b]) => b - a).reduce((obj, [key, value]) => {obj[key] = value;return obj;}, {} as Record);return sortedFrequency;}
}
2. 搜索工具使用示例
// 初始化日志搜索工具
const logSearch = new LogSearchTool(logEntries);
// 1. 使用正则表达式搜索
const results = logSearch.regexSearch(/MouseMove:\s*x=(\d+),\s*y=(\d+)/);
console.log("鼠标移动日志:", results);
// 2. 高级筛选
const filtered = logSearch.advancedFilter({eventType: "keyboard",startTime: "2023-01-01T00:00:00",endTime: "2023-01-01T23:59:59",regexPattern: "Enter"
});
console.log("筛选结果:", filtered);
// 3. 分析按键频率
const keyStats = logSearch.analyzeKeyFrequency();
console.log("按键频率统计:", keyStats);

性能优化策略

  1. 日志数据分页加载:避免一次性加载所有日志数据,采用分页加载策略
function loadLogsPage(page: number, pageSize: number): Promise {// 实现分页加载逻辑
}
  1. 正则表达式预编译:频繁使用的正则表达式进行预编译
// 预编译常用正则表达式
const commonRegexes = {keyboard: /Keyboard(Press|Release):\s*(\w+)/g,mouse: /Mouse(Press|Release|Move):\s*(.*)/g,gamepad: /Gamepad(Axis|Button)Changed:\s*(.*)/g
};
  1. 搜索结果缓存:缓存相同搜索条件的结果
// 使用Map缓存搜索结果
const searchCache = new Map();
function cachedSearch(pattern: string): LogEntry[] {if (searchCache.has(pattern)) {return searchCache.get(pattern)!;}const results = logSearch.regexSearch(pattern);searchCache.set(pattern, results);// 限制缓存大小,避免内存溢出if (searchCache.size > 100) {const oldestKey = searchCache.keys().next().value;searchCache.delete(oldestKey);}return results;
}

高级应用场景

日志数据分析与可视化

使用搜索工具收集的日志数据可以进行进一步分析,生成可视化报告:

// 生成按键频率图表数据
function generateKeyFrequencyData(logs: LogEntry[]): ChartData {const frequency = new LogSearchTool(logs).analyzeKeyFrequency();return {labels: Object.keys(frequency).slice(0, 10), // 取前10个最常用按键datasets: [{label: '按键频率',data: Object.values(frequency).slice(0, 10),backgroundColor: 'rgba(54, 162, 235, 0.5)',borderColor: 'rgba(54, 162, 235, 1)',borderWidth: 1}]};
}

自定义搜索规则

允许用户保存自定义搜索规则,方便日后重复使用:

interface SavedSearch {id: string;name: string;pattern: string;flags: string;filters?: FilterOptions;
}
class SearchRuleManager {private savedSearches: SavedSearch[] = [];// 保存搜索规则saveSearchRule(rule: Omit): SavedSearch {const newRule: SavedSearch = {...rule,id: this.generateId()};this.savedSearches.push(newRule);this.persistRules(); // 持久化存储return newRule;}// 加载搜索规则loadSearchRule(id: string): SavedSearch | undefined {return this.savedSearches.find(rule => rule.id === id);}// 执行保存的搜索规则executeSavedSearch(id: string, logs: LogEntry[]): LogEntry[] {const rule = this.loadSearchRule(id);if (!rule) return [];const searchTool = new LogSearchTool(logs);if (rule.filters) {return searchTool.advancedFilter({...rule.filters,regexPattern: rule.pattern,regexFlags: rule.flags});} else {return searchTool.regexSearch(rule.pattern, rule.flags);}}// 其他方法...
}

日志异常检测

利用高级搜索功能实现日志异常检测:

// 检测异常高频按键
function detectAbnormalKeyPresses(logs: LogEntry[], threshold: number = 100) {const frequency = new LogSearchTool(logs).analyzeKeyFrequency();return Object.entries(frequency).filter(([, count]) => count > threshold).map(([key, count]) => ({key,count,message: `按键 "${key}" 频率异常高: ${count}次`}));
}

总结与展望

功能总结

本文详细介绍了BongoCat日志搜索工具的设计与实现,主要功能包括:

  1. 正则表达式搜索:利用正则表达式精准匹配日志内容
  2. 多维度筛选:从事件类型、时间范围、设备类型等维度筛选日志
  3. 日志分析功能:统计按键频率、生成可视化报告
  4. 高级应用:自定义搜索规则、异常检测等

未来功能展望

  1. 实时日志监控:添加实时日志流监控功能,支持即时搜索和告警
  2. AI辅助搜索:引入自然语言处理技术,支持用自然语言描述搜索需求
  3. 日志关联分析:分析不同事件之间的关联关系,发现隐藏模式
  4. 多设备日志聚合:支持同时搜索多台设备上的BongoCat日志

使用建议

  1. 对于简单搜索需求,使用基本正则表达式功能
  2. 对于复杂分析,结合高级筛选和数据分析功能
  3. 定期备份重要日志数据,避免数据丢失
  4. 根据实际需求自定义搜索规则,提高工作效率

通过本文介绍的日志搜索工具,你可以更高效地分析BongoCat的日志数据,深入了解用户交互模式,为BongoCat的功能优化提供数据支持。无论是普通用户还是开发人员,都能从中获得实用的日志分析能力。

请点赞、收藏、关注三连,以便获取更多关于BongoCat的高级使用技巧和工具开发教程!下期预告:《BongoCat模型定制指南:从入门到精通》

【免费下载链接】BongoCat让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力!【免费下载链接】BongoCat 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 自定义控件库

一、使用场景开发自定义控件库时,向外部暴露可复用的样式、模板、画笔等资源。 多模块应用中,共享通用资源(如主题样式)。 需要避免资源键命名冲突的场景。二 ,程序 1.静态的后台代码 资源键// MyControlLibrary/R…

2025质量可靠的义乌刺绣工厂推荐榜

2025质量可靠的义乌刺绣工厂推荐下。在义乌及周边区域,刺绣工厂数量众多,而质量可靠是企业选择合作方的核心考量因素。 Top1:浦江县俊贤刺绣有限公司 推荐程度:★★★★★ 浦江县俊贤刺绣有限公司虽位于浦江,但与…

c# 使用 jwt

基于 oauth2.0 协议, 具体原理可以参考:https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.htmlpublic class JWTHelper{private const string salt = "123";//盐//获得jwt令牌public sta…

2025义乌做刺绣的厂家推荐榜单

2025义乌做刺绣的厂家推荐下。义乌及周边区域作为纺织服饰配套产业集聚地,刺绣加工领域企业数量众多,涵盖传统手绣、机械刺绣等不同类型,产品可适配服装、家居装饰、礼品等多个应用场景。 Top1:浦江县俊贤刺绣有限…

2025 年液压旋转接头,高温蒸汽旋转接头,通水旋转接头厂家最新推荐,精准检测与稳定性能深度解析

引言 液压、高温蒸汽及通水旋转接头作为工业流体传输的核心部件,其密封可靠性、工况适配性直接决定生产连续性与能源效率。据行业专项测评数据显示,优质接头可降低设备停机率 37%,减少流体损耗达 45%,而劣质产品导…

Linux基本命令篇 —— date命令

Linux基本命令篇 —— date命令Linux基本命令篇 —— date命令 https://blog.csdn.net/2302_80871796/article/details/148979465网站:http://shibowl.topgithub:https://github.com/hanbinjxnc博客园:https://www.…

2025 年连铸机旋转接头,埋入式旋转接头,球体摆动旋转接头,造纸机旋转接头厂家最新推荐,精准检测与稳定性能深度解析

引言 连铸机、埋入式、球体摆动及造纸机专用旋转接头作为工业流体传输的核心部件,其性能直接关系到冶金、造纸等行业的生产连续性与成本控制。据行业协会 2025 年专项测评数据显示,优质旋转接头可使设备停机维修频次…

CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起

CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起环境:系统:Windows 10 x64 CorelDRAW:2019 x64故障表现:偶尔启动进入桌面后任务栏很快卡死,连托盘区图标都没出来几个,鼠标移上…

nef怎么转换成jpg格式你还不会?分享4个实用技巧

你用单反拍下的精彩瞬间,大多都静静地躺在存储卡里,以NEF格式保存着原始的美。但这种专业格式在分享时却常让人头疼——如何快速分享到社交网络?别急,这就为你推荐4款好用的NEF转JPG宝藏工具,不仅转换画质有保障,…

2025 年非标旋转接头,异形旋转接头,钢铁厂旋转接头厂家最新推荐,聚焦高端定制需求与全案交付能力

引言 在钢铁、冶金等工业领域,非标旋转接头、异形旋转接头及钢铁厂专用旋转接头作为核心流体传输部件,其定制精度与工况适配性直接决定生产连续性与安全性。然而市场上多数产品存在定制响应慢、极端工况耐受差等问题…

故障处理:ORA-02298: cannot validate (CTG.FK_CTG_LOGS_INT_201306) – parent keys not found

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障处理:O…

2025年上海家电展会展台搭建服务商权威推荐榜单:展台搭建会展服务/会展展台装修设计/展台设计装修源头公司精选

上海会展产业年产值已突破600亿元,其中家电展览会展台搭建市场需求增速达18%,专业化服务成为展会成功的关键因素。 据2025年上海会展行业协会统计数据显示,上海全年举办各类家电相关展会超过120场,参展企业数量突破…

2025 年矿车生产,井下矿车,底侧卸式矿车厂家最新推荐,产能、专利、环保三维数据透视

引言 2025 年全球矿用卡车需求量预计突破 12,000 台,井下矿车与底侧卸式矿车作为核心运输装备,其性能直接影响矿山开采效率与安全。为破解市场选型难题,本次测评联合行业权威机构,基于产能规模、专利技术、环保认证…

macro出pin

set terms [dbGet [dbGet top.insts.cell.name JLFLS064K09DG -p2].pgInstTerms.name VPP -v -p1] set n 0 foreach term $terms {set inst [dbGet $term.inst]set lrects [dbGet $term.term.pins.layerShapeShapes.sh…

2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视

引言 随着矿山开采向大型化、智能化转型,定制矿车、大型矿车及固定式矿车的性能与合规性成为企业核心需求。本次榜单基于矿山设备行业协会 2025 年度专项测评数据生成,测评覆盖全国 38 家源头厂家,采用 "产能 …

DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪

特性简介DP1312EA是一款应用广泛的非接触读卡器芯片 ,集成了在 13.56MHz 下的多种非接触通信方式和协议 ,具有很高的技术集成度。其读写器模式能够支持 ISO/IEC 14443A、ISO/IEC 14443B 标准以及 FeliCa 规范,同时也…

2025 年矿用平板车,重型平板车,履带平板车,矿山平板车厂家最新推荐,产能、专利、环保三维数据透视!

引言 矿山平板车作为物料转运核心设备,其性能直接关联作业效率与安全。当前市场品牌繁杂,采购方常因信息不对称陷入选择困境。本次推荐基于 2025 年 10 月最新行业测评,联合专业检测机构参照 MT/T 1052-2007《重型平…

醒图电脑版下载与安装教程(2025最新版)

想在电脑上体验高质量修图?本文带来 **醒图电脑版下载与安装教程**,详细介绍从下载、安装到功能使用的全过程。支持 Windows 10/11 系统,无需模拟器即可运行。还包含 AI 智能美颜、专业调色、滤镜特效与常见问题解决…

2025 年 10 月翻斗式矿车,侧翻矿车,1 吨矿车,运输矿车厂家最新推荐,产能、专利、环保三维数据透视

引言 随着矿山行业电动化转型加速,翻斗式、侧翻式及 1 吨级运输矿车的性能与合规性需求持续攀升。本次测评基于恒州诚思 2025 年专项调研数据,联合矿用设备检测机构开展权威评估,涵盖 32 家源头厂家的核心产品。测评…

读书笔记:告别数据冗余!Oracle引用分区让父子表管理如此简单

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…