如何让iTerm2自动格式化KeystoneJS输出的JSON日志?
如何在iTerm2中自动格式化KeystoneJS的JSON日志
当然可以!在iTerm2里实现JSON日志自动格式化有几个实用的方案,我来给你逐一说明:
方法1:用iTerm2触发器结合jq(推荐)
这是最省心的方案,能让iTerm2自动识别并格式化屏幕上的JSON日志,不需要修改你的启动命令。
首先你需要安装jq(一款强大的JSON处理工具):
- Mac:
brew install jq - Ubuntu/Debian:
sudo apt install jq - CentOS/RHEL:
sudo yum install jq
然后配置iTerm2触发器:
- 打开iTerm2偏好设置(快捷键
Cmd+,),切换到Profiles标签,选中你日常使用的终端配置文件。 - 点击Advanced选项卡,找到Triggers区域,点击Edit按钮。
- 添加一条新触发器:
- Regular Expression:输入
^\{.*\}$(匹配单行JSON日志,如果你遇到多行JSON可以调整为更通用的正则,比如(\{[\s\S]*\})) - Action:选择
Run Command... - Parameters:填入
echo "\0" | jq(\0代表触发器匹配到的文本内容) - 勾选Instant和Silent(避免重复输出原始日志,让格式化后的内容直接替换原内容)
- Regular Expression:输入
设置完成后,只要iTerm2捕获到符合规则的JSON日志,就会自动用jq格式化展示,可读性拉满!
方法2:通过Shell管道实时过滤输出
如果你的KeystoneJS是直接通过终端命令启动的,可以把输出直接通过jq管道处理,这样所有日志都会经过格式化:
keystone start | jq
如果遇到非JSON格式的日志导致jq报错,可以用兼容模式处理,让非JSON内容原样输出:
keystone start | jq -r 'try . catch .'
或者只过滤JSON格式的日志进行格式化:
keystone start | grep -E '^\{.*\}$' | jq
方法3:自定义Shell别名简化操作
为了避免每次都输入长命令,你可以在Shell配置文件(比如~/.zshrc或~/.bashrc)中添加一个别名:
alias keystone-start='keystone start | jq -r "try . catch ."'
保存配置后执行source ~/.zshrc(或对应的配置文件)生效,之后只要输入keystone-start就能自动启动KeystoneJS并格式化JSON日志了。
内容的提问来源于stack exchange,提问作者Cerulean
相关产品推荐
相关产品推荐

