如何在日志查看器中查看托管虚拟机的JSON日志?

Arjen

我正在尝试在Compute Engine VM实例上获取JSON格式的日志,以显示在Google Developer Console的日志查看器中。根据此文档,应该可以这样做:

使用App Engine托管VM的应用程序应将自定义日志文件写入/ var / log / app_engine / custom_logs的VM日志目录中。这些文件将自动收集并在Logs Viewer中可用。

自定义日志文件的后缀必须为.log或.log.json。如果后缀为.log.json,则日志必须为JSON格式,每行一个JSON对象。如果后缀为.log,则将日志条目视为纯文本。

这似乎对我不起作用:以结尾.log的日志在“日志查看器”中可见,但显示为纯文本。以结尾的日志.log.json根本不可见。

它还与最近的另一篇文章相反,该文章指出文件名必须以.log结尾,并且其内容被视为纯文本

据我所知,Google使用Fluentd将日志文件编入了Log Viewer。在GitHub存储库中,我找不到任何.log.json正在文件建立索引的证据

有谁知道如何使它工作?还是文档过时了,并且由于某些原因已删除了此功能?

乔希

这是为托管VM logviewer生成JSON日志的一种方法:

所需的JSON格式

目标是为每个包含以下内容的日志行创建一个单行JSON对象:

{
    "message": "Error occurred!.",
    "severity": "ERROR",
    "timestamp": {
        "seconds": 1437712034000,
        "nanos": 905
    }
}

(来自Google的信息:https : //code.google.com/p/googleappengine/issues/detail?id=11678#c5

使用python-json-logger

参见:https : //github.com/madzak/python-json-logger

def get_timestamp_dict(when=None):
    """Converts a datetime.datetime to integer milliseconds since the epoch.

    Requires special handling to preserve microseconds.

    Args:
        when:
            A datetime.datetime instance. If None, the timestamp for 'now'
            will be used.

    Returns:
    Integer time since the epoch in milliseconds. If the supplied 'when' is
    None, the return value will be None.
    """
    if when is None:
        when = datetime.datetime.utcnow()

    ms_since_epoch = float(time.mktime(when.utctimetuple()) * 1000.0)
    return {
        'seconds': int(ms_since_epoch),
        'nanos': int(when.microsecond / 1000.0),
    }

def setup_json_logger(suffix=''):
    try:

        from pythonjsonlogger import jsonlogger

        class GoogleJsonFormatter(jsonlogger.JsonFormatter):

            FORMAT_STRING = "{message}"

            def add_fields(self, log_record, record, message_dict):
                super(GoogleJsonFormatter, self).add_fields(log_record,
                                                            record,
                                                            message_dict)

                log_record['severity'] = record.levelname
                log_record['timestamp'] = get_timestamp_dict()
                log_record['message'] = self.FORMAT_STRING.format(
                                            message=record.message,
                                            filename=record.filename,
                                            )

        formatter = GoogleJsonFormatter()

        log_path = '/var/log/app_engine/custom_logs/worker'+suffix+'.log.json'
        make_sure_path_exists(log_path)
        file_handler = logging.FileHandler(log_path)

        file_handler.setFormatter(formatter)
        logging.getLogger().addHandler(file_handler)

    except OSError:
        logging.warn("Custom log path not found for production logging")

    except ImportError:
        logging.warn("JSON Formatting not available")

要使用,只需调用setup_json_logger-您可能还想更改worker日志的名称

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在App Engine日志查看器中过滤超过特定响应大小的日志消息?

来自分类Dev

如何在C#.net中的Windows XP中读取事件查看器日志

来自分类Dev

如何在PowerShell(在Windows 10上)中阅读最新的Chkdsk事件查看器日志?

来自分类Dev

如何在日志文件查看器中复制和粘贴

来自分类Dev

Flask日志未显示在GCP日志查看器中

来自分类Dev

对SIP日志文件查看器的建议

来自分类Dev

错误:启动 javaw - 查看器时无法创建 Java 虚拟机

来自分类Dev

如何在C#中获取所有Windows事件日志(事件查看器日志)及其层次结构和友好名称的列表

来自分类Dev

如何在虚拟机中托管网站?

来自分类Dev

Ubuntu 服务器日志查看器 cli

来自分类Dev

Ruby On Rails 4.2的可视日志查看器

来自分类Dev

Powershell:需要获取事件查看器日志

来自分类Dev

管理实时流查看器巨大的日志

来自分类Dev

MVC 4的事件查看器日志创建错误

来自分类Dev

经典的logback SocketAppender和Lilith日志查看器

来自分类Dev

具有IntelliJ集成的日志查看器

来自分类Dev

带有GUI的Python日志查看器?

来自分类Dev

如何配置ReflectInsight日志查看器从数据库读取nlog数据?

来自分类Dev

在Azure中使用事件日志(在事件查看器中写入)

来自分类Dev

在Azure中使用事件日志(在事件查看器中写入)

来自分类Dev

是否可以在SSMS日志文件查看器中更改字体大小?

来自分类Dev

如何在Opera中禁用内置的PDF查看器

来自分类Dev

如何在App Engine中查看失败的cron作业的日志?

来自分类Dev

如何在git日志中查看快速合并?

来自分类Dev

如何在TeamCity中查看.NET跟踪日志?

来自分类Dev

我如何在systemd中查看iptables日志

来自分类Dev

如何在 PowerShell 中查看远程日志文件的内容?

来自分类Dev

如何在 Android Studio 中查看 NDK 错误日志?

来自分类Dev

如何在 docker 中查看应用程序的日志?

Related 相关文章

  1. 1

    如何在App Engine日志查看器中过滤超过特定响应大小的日志消息?

  2. 2

    如何在C#.net中的Windows XP中读取事件查看器日志

  3. 3

    如何在PowerShell(在Windows 10上)中阅读最新的Chkdsk事件查看器日志?

  4. 4

    如何在日志文件查看器中复制和粘贴

  5. 5

    Flask日志未显示在GCP日志查看器中

  6. 6

    对SIP日志文件查看器的建议

  7. 7

    错误:启动 javaw - 查看器时无法创建 Java 虚拟机

  8. 8

    如何在C#中获取所有Windows事件日志(事件查看器日志)及其层次结构和友好名称的列表

  9. 9

    如何在虚拟机中托管网站?

  10. 10

    Ubuntu 服务器日志查看器 cli

  11. 11

    Ruby On Rails 4.2的可视日志查看器

  12. 12

    Powershell:需要获取事件查看器日志

  13. 13

    管理实时流查看器巨大的日志

  14. 14

    MVC 4的事件查看器日志创建错误

  15. 15

    经典的logback SocketAppender和Lilith日志查看器

  16. 16

    具有IntelliJ集成的日志查看器

  17. 17

    带有GUI的Python日志查看器?

  18. 18

    如何配置ReflectInsight日志查看器从数据库读取nlog数据?

  19. 19

    在Azure中使用事件日志(在事件查看器中写入)

  20. 20

    在Azure中使用事件日志(在事件查看器中写入)

  21. 21

    是否可以在SSMS日志文件查看器中更改字体大小?

  22. 22

    如何在Opera中禁用内置的PDF查看器

  23. 23

    如何在App Engine中查看失败的cron作业的日志?

  24. 24

    如何在git日志中查看快速合并?

  25. 25

    如何在TeamCity中查看.NET跟踪日志?

  26. 26

    我如何在systemd中查看iptables日志

  27. 27

    如何在 PowerShell 中查看远程日志文件的内容?

  28. 28

    如何在 Android Studio 中查看 NDK 错误日志?

  29. 29

    如何在 docker 中查看应用程序的日志?

热门标签

归档