lognal
外观和行为都像终端的日志查看器,可用于 Web 和 Flutter。它把日志画在画布上,而不是每行创建一个元素,所以无论消息来得多快、历史有几万条,一帧的开销都一样,应用不必自己做控制台面板。
关于这个项目
lognal 是给需要在自己界面上显示日志的应用准备的日志查看器:网页里的控制台面板、Flutter 应用的调试界面,或是读取日志文件的窗口。条目以普通数据保存,画布上只绘制可见的行,所以一帧的开销取决于屏幕上显示的内容,而不是历史的长度。底下的核心——存储、过滤、文字排布和布局——用 TypeScript 和 Dart 各写了一遍,逐个文件对应,因此一行在哪里换行、占多宽、怎样被搜索命中,在浏览器和应用里都一样。
它会照搬运行时本来就在输出的内容:浏览器里的 console.log、console.table 和 console.group,Flutter 里的 print 和 debugPrint,原来的输出也照常工作。它能读取日志文件、识别编码、把 ANSI 转义码变成颜色,还能跟踪不断增长的文件。对象、列表、映射和错误在记录的那一刻被捕获,可以就地展开和收起。工具栏可以跟随新日志、按文字和级别过滤,搜索时高亮所有匹配而不隐藏其余内容;打开输入行后,命令会交给处理函数,并打印返回的结果。韩文等宽字符各占两格,不会打乱网格,换行时韩文单词不会被拆开,输入行会等输入法组字结束。控件都是带有无障碍名称的真实按钮,可见的条目还会同步到一个隐藏列表,供屏幕阅读器读取。
npm 包没有运行时依赖:React 是可选的同级依赖,只有使用 lognal/react 里的组件时才需要,样式表引入一次即可。Flutter 包只依赖 Flutter SDK,建立在 widgets 层之上,不用 Material 也不用 Cupertino,放进任何应用都不会带进第二套设计系统。内置六套配色,auto 跟随系统的浅色或深色设置,自定义主题只需一组 CSS 自定义属性或一次 buildTheme 调用。JavaScript 包是 ESM,附带 TypeScript 类型声明;两个包各自维护版本号和更新日志。
功能
文档站点
TypeScript 类型
多语言支持
经测试验证
跨平台支持
内置无障碍支持
深色模式
支持摇树优化
零依赖
