使用winston进行node.js日志记录,我获得了json日志文件。这种情况下的日志文件只是一系列(换行符分隔的)json对象。这对于日志查询和将日志视为一流数据非常有用!
然而,Sublime
和gedit
(至少我在Ubuntu上使用的版本,升华2和gedit 3.6.2),突出显示json - 他们使用相同的颜色键和值,使任何日志钻孔都非常痛苦,并且无法以任何远程人道的方式进行。
json突出显示的现有chrome extensions
在这里也没有帮助 - 它们无法处理json对象的集合,因此无法显示这些日志文件,除非我首先手动将它们转换为合成父对象中的数组(从而将它们变成json对象)。在查看仍在写入的日志文件的情况下,这是乏味的......
是否有任何工具都可以按原样吞下json日志文件,同时突出显示不同颜色的键而不是值,这样json日志对人类也很友好,而不仅仅是机器?这真是一种痛苦。
谢谢!
答案 0 :(得分:27)
查看Neon Color Scheme,可通过Package Control和Github获取Sublime Text。键和值以不同颜色突出显示,并且不同级别有不同的键颜色。
完全披露:我是这个项目的维护者,但我真的认为它会帮助你 - 当使用如上所示的多级JSON文件时,它肯定有帮助。
答案 1 :(得分:24)
如果您喜欢默认的Monokai主题,请查看Monokai JSON主题! 它支持字符串,字典,数组以及所有这些混合!
https://github.com/ColibriApps/MonokaiJsonPlus
答案 2 :(得分:5)
我修改了原始的暮光主题,为更漂亮的json添加规则。它是@MattDMo答案的修改版本,并且具有不同级别的类似不同的键颜色。你可以从这里得到它
https://github.com/shaunakv1/twilight-tmTheme-better-json-highlight
以下是JSON的外观:
答案 3 :(得分:4)
混合Allen Bargui和MattDMo的答案,您可以通过添加{{1}添加更多指定代码深度的dicts来更改嵌套键/值的颜色在source.json之后。
转到偏好设置>找到主题文件。浏览包,然后在颜色方案 - 默认文件夹中。通过添加以下行来编辑它:
meta
在其余之前添加更深层的非常重要,因为Sublime会选择第一个匹配的匹配项。我猜测添加更多的<dict>
<key>name</key>
<string>Json Keys - 1 deep</string>
<key>scope</key>
<string>source.json meta meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF0000</string> <!-- your keys color -->
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Values - 1 deep</string>
<key>scope</key>
<string>source.json meta meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00FF00</string> <!-- your custom color -->
</dict>
</dict>
<dict>
<key>name</key>
<string>Json Keys</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF0000</string> <!-- your keys color -->
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Values</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00FF00</string> <!-- your custom color -->
</dict>
</dict>
可以用于进一步的深度,但它实际上没有...但它至少为深度1做了诀窍。
答案 4 :(得分:1)
您会发现https://jsonlog.io/是一种解决方案,可以很好地了解应用程序的结构化数据IO。我是这方面的开发人员,但它是我为解决自己的工作流程中的确切问题而构建的免费资源。
以下是一种可能会帮助您的日志格式的示例:
由于它是实时日志记录型平台,因此数据在从应用程序发送时实时显示。这是深入了解实时/开发应用程序IO的好方法。
答案 5 :(得分:1)
我开发了一个命令行工具来查看json日志(请参见https://github.com/qiangyt/jog)。就像'tail -f log-file'一样,但是它用于json日志。
它是使用GO编写的,因此是跨平台的。可以通过https://github.com/qiangyt/jog/releases下载二进制文件。
没有说明如何很好地配置它,但是默认情况下它可以正常工作,很高兴收到问题报告或新功能请求
答案 6 :(得分:0)
查看SublimeText中的json文件,我意识到键和值具有不同的范围。所以定制你的配色方案并为键和值添加不同的颜色应该是非常简单的。
键的范围为source.json meta.structure.dictionary.json string.quoted.double.json
,而值为source.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json
因此,如果您在颜色方案规则的底部添加此代码段,您应该以不同的颜色看到它们:
<dict>
<key>name</key>
<string>Json Keys</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#FF0000</string> <!-- your keys color -->
</dict>
</dict>
<dict>
<key>name</key>
<string>JSON Values</string>
<key>scope</key>
<string>source.json meta.structure.dictionary.json meta.structure.dictionary.value.json string.quoted.double.json</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00FF00</string> <!-- your custom color -->
</dict>
</dict>
答案 7 :(得分:0)
除了发布的其他出色答案之外,解决该问题的另一个非常简单且非常优雅的解决方案是使用Boxy Theme。使用随附的配色方案之一时,默认情况下,JSON的语法高亮显示。
使用Package Control安装,其中Boxy列为 Boxy Theme
。
Command Palette
打开Command+Shift+P (mac) / Ctrl+Shift+P (win)
Package Control: Install Package
Boxy Theme
并点击Enter
Package Control: Satisfy Dependencies
使用主题提供的命令激活UI主题和配色方案:
Command Palette
打开Command+Shift+P (mac) / Ctrl+Shift+P (win)
Boxy Theme: Activation
或Boxy Theme: Configuration
Enter
Boxy Theme已应用 Boxy Tomorrow 配色方案。颜色变化深达10级: