27

使用winston进行 node.js 日志记录,我得到 json 日志文件。在这种情况下,日志文件只是一系列(换行符分隔的)json 对象。这对于日志查询和将日志视为一流数据非常有用!

但是,两者Sublimegedit(至少我在 Ubuntu 上使用的版本,sublime 2 和 gedit 3.6.2)都没有突出显示 json - 它们对键和值使用相同的颜色,这使得任何日志钻探都非常痛苦并且真的不可能以任何远程人道的方式进行。

现有chrome extensions的 json 突出显示在这里也没有帮助 - 它们无法处理 json 对象的集合,因此无法显示这些日志文件,除非我首先手动将它们转换为合成父对象中的数组(从而将它们转换为 json 对象)。在查看仍在写入的日志文件的情况下,这很乏味,而且一般......

是否有任何工具既可以按原样吞下 json 日志文件,又可以用不同于值的颜色突出显示键,从而使 json 日志对人也很友好,而不仅仅是对机器?这是一个真正的痛苦。

谢谢!

4

8 回答 8

27

查看Neon Color Scheme,可通过Package ControlGithub for Sublime Text 获得。键和值以不同的颜色突出显示,不同级别有不同的键颜色。

带有霓虹灯的 JSON

全面披露:我是这个项目的维护者,但我真的认为它会帮助你——在处理像上面显示的那样的多级 JSON 文件时,它肯定会帮助我。

于 2014-01-19T04:09:21.937 回答
23

如果您喜欢默认的 Monkai 主题,请查看 MonokaiJSON+ 主题!它还支持字符串、字典、数组以及所有这些混合!

https://github.com/ColibriApps/MonokaiJsonPlus

Monokai JSON+ 主题

于 2014-12-21T21:10:40.997 回答
5

我修改了原始的暮光主题以添加更漂亮的 json 规则。这是@MattDMo 答案的修改版本,并且对于不同级别具有相似的不同键颜色。你可以从这里得到它

https://github.com/shaunakv1/twilight-tmTheme-better-json-highlight

这是 JSON 的外观:

在此处输入图像描述

于 2015-02-11T23:27:33.720 回答
4

混合Allen BarguiMattDMo的答案,您可以通过在 source.json 单词之后添加更多指定代码深度的字典来更改嵌套键/值的颜色meta

通过转到Preferences > Browse Packages 然后在Color Scheme - Default文件夹中找到主题文件。通过添加以下行来编辑它:

<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>

重要的是在其余部分之前添加更深的部分,因为 Sublime 将选择第一个匹配项。我猜想添加更多meta会为更深的深度工作,但实际上并没有……但它至少在深度 1 上起到了作用。

于 2014-12-18T09:46:43.300 回答
1

我开发了一个命令行工具来查看 json 日志(参见https://github.com/qiangyt/jog)。它就像'tail -f log-file',但它是用于 json 日志的。

它是使用 GO 编写的,因此它是跨平台的。二进制文件可通过https://github.com/qiangyt/jog/releases下载。

没有记录如何很好地配置它,但默认情况下它可以正常工作,我很高兴收到问题报告或新功能请求

于 2020-07-18T14:07:43.383 回答
1

您会发现https://jsonlog.io/是一种解决方案,可以很好地了解应用程序的结构化数据 IO。我是这背后的开发人员,但它是我构建的免费资源,用于在我自己的工作流程中解决这个确切的问题。

以下是可能有帮助的其中一种日志格式的示例:

JSONLog 漂亮的日志视图

由于它是一个实时日志类型平台,因此数据会在从您的应用程序发送时实时显示。这是深入了解您的实时/开发应用程序 IO 的好方法。

于 2019-09-27T19:50:16.560 回答
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>
于 2014-01-18T20:59:07.830 回答
0

如果你想在控制台可视化winston json 日志,你可以使用 munia-pretty-json

您的 json 数据 (app-log.json)

{"time":"2021-06-09T02:50:22Z","level":"info","message":"Log for pretty JSON","module":"init","hostip":"192.168.0.138","pid":123}
{"time":"2021-06-09T03:27:43Z","level":"warn","message":"Here is warning message","module":"send-message","hostip":"192.168.0.138","pid":123}

运行命令:

munia-pretty-json app-log.json

这是控制台上的可读输出:

在此处输入图像描述

您可以使用模板格式化输出。默认模板是'{time} {level -c} {message}'

使用模板:

munia-pretty-json -t '{module -c} - {level} - {message}' app-log.json

输出: 在此处输入图像描述

于 2021-10-19T08:47:41.303 回答