繁体   English   中英

Google App Engine灵活环境中的原始自定义日志

[英]Raw Custom Logs in Google App Engine Flexible Environment

我在Google App Engine的灵活(VM)环境中使用了以下代码,将自定义日志与其他应用程序日志中的特定格式要求分开:

import logging as std_logging

std_logging.basicConfig()

custom_formatter = std_logging.Formatter('%(created)f\t%(message)s')
custom_handler = std_logging.FileHandler('/var/log/app_engine/custom_logs/custom.log')
custom_handler.setFormatter(custom_formatter)
custom_logging = std_logging.getLogger('custom')
custom_logging.addHandler(custom_handler)

在普通的Python环境中,这些将以指定格式的纯文本行写入日志文件。

但是,在将从App Engine生成的日志转储到云存储之后,我注意到App Engine已将每个日志包含在其他信息中。

例如(格式清晰)

{
    "insertId":"vsdacv1235jj1",
    "log":"appengine.googleapis.com/custom.var.log.app_engine.app.custom_logs.custom.log",
    "metadata":{
        "labels":{
            "appengine.googleapis.com/module_id":"default",
            "appengine.googleapis.com/version_id":"1",
            "compute.googleapis.com/resource_id":"1234256789901203",
            "compute.googleapis.com/resource_name":"bbq23asd123",
            "compute.googleapis.com/resource_type":"instance"
        },
        "projectId":"my-project",
        "serviceName":"appengine.googleapis.com",
        "timestamp":"2016-06-24T20:16:15Z",
        "zone":"us-central1-f"
    },
    "textPayload":"1466799374933\tthis is my custom message"
}

textPayload字段的值是我生成的实际日志,但由App Engine包装。

有没有办法防止这种行为? 不希望重新处理这些日志以便正确格式化它们。

额外的信息实际上非常方便,特别是在appengine环境中,模块/服务,版本或instance_id上​​的过滤可以真正帮助您调查问题。

如果重新处理日志是你的问题,我建议将导出到BigQuery功能 日志将不断流式传输到BigQuery并立即查询。 这里的好处是你可以只查询text_payload属性并轻松地将这个结果集导出到csv,text,json等。

至于从日志中只输出文本行,我不相信这是可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM