当前位置: 首页 > 知识库问答 >
问题:

在 Google Cloud Logs 中看不到应用程序日志

吕越彬
2023-03-14

如何在Google Cloud上查看日志消息?:https://console.cloud.google.com/logs

这是我在运行dev_appserver.py(本地运行)时在终端中看到的:

INFO     2016-05-16 14:00:45,118 module.py:787] default: "GET /static/images/contact.png HTTP/1.1" 304 -
INFO     2016-05-16 14:00:45,128 module.py:787] default: "GET /static/images/email.png HTTP/1.1" 304 -
INFO     2016-05-16 14:00:45,136 module.py:787] default: "GET /static/images/phone.png HTTP/1.1" 304 -
INFO     2016-05-16 14:00:45,487 basehandler.py:19] entering basehandler.py
INFO     2016-05-16 14:00:45,516 module.py:787] default: "GET /static/images/logo-349x209.png HTTP/1.1" 304 -
INFO     2016-05-16 14:00:45,562 requesthandlers.py:26] entering requesthandlers.py
INFO     2016-05-16 14:00:45,563 app.py:28] entering app.py
INFO     2016-05-16 14:00:45,563 app.py:198] Using development database

将显示应用程序日志消息和请求日志记录。
但是,当我查看部署的相同代码的日志时,我只能看到正在记录的请求:

我用来生成应用程序日志消息的代码如下:

import logging
logger = logging.getLogger("someLogger")

logger.info("entering app.py")

但我也尝试过直接使用<code>logging.info(…)

我试图在各种资源中找到这个问题的答案,但是我一无所获,大多数都是关于如何在本地开发时设置日志级别。< br >我想我需要启用一些设置才能在Google Cloud Logs上查看应用程序日志。

我看过的资源:

  • https://cloud.google.com/logging/docs/view/logs_viewer
  • https://cloud.google.com/appengine/docs/python/logs/
  • 如何更改dev_appserver的日志记录级别
  • 如何在Google App Engine中写入控制台?
  • Google App Engine-找不到我的日志记录消息
  • https://docs.python.org/3/howto/logging.html

共有2个答案

焦博实
2023-03-14

将Google Cloud Platform日志记录集成到Python代码中的一个简单方法是从< code >日志记录创建一个子类。StreamHandler。这样,日志记录级别也将与Google Cloud日志记录的级别相匹配,使您能够根据严重性进行过滤。这个解决方案也适用于云运行容器。

此外,您可以将该处理程序添加到任何现有的日志配置中,而无需更改当前的日志记录代码。

import json
import logging
import os
import sys
from logging import StreamHandler

from flask import request


class GoogleCloudHandler(StreamHandler):
    def __init__(self):
        StreamHandler.__init__(self)

    def emit(self, record):
        msg = self.format(record)
        # Get project_id from Cloud Run environment
        project = os.environ.get('GOOGLE_CLOUD_PROJECT')

        # Build structured log messages as an object.
        global_log_fields = {}
        trace_header = request.headers.get('X-Cloud-Trace-Context')

        if trace_header and project:
            trace = trace_header.split('/')
            global_log_fields['logging.googleapis.com/trace'] = (
                f"projects/{project}/traces/{trace[0]}")

        # Complete a structured log entry.
        entry = dict(severity=record.levelname, message=msg)
        print(json.dumps(entry))
        sys.stdout.flush()

配置和使用处理程序的一种方法是:

def get_logger():
    logger = logging.getLogger(__name__)

    if not logger.handlers:
        gcp_handler = GoogleCloudHandler()
        gcp_handler.setLevel(logging.DEBUG)

        gcp_formatter = logging.Formatter(
            '%(levelname)s %(asctime)s [%(filename)s:%(funcName)s:%(lineno)d] %(message)s')
        gcp_handler.setFormatter(gcp_formatter)
        logger.addHandler(gcp_handler)
    return logger
郑宜民
2023-03-14

应用引擎按请求对日志进行分组。您需要在“新”GAE日志查看器中使用请求左侧的三角形/指针展开日志。

就个人而言,我更喜欢使用旧的GAE日志查看器,但我不确定它会存在多长时间:

https://appengine.google.com/logs?app_id=s~xxx

(此查看器显示请求日志并允许日志扩展。)

 类似资料:
  • 我想玩动作过滤器创建和实施ETag的动作过滤器,并使HomeController从mvc 4模板缓存10秒。 以下是我的属性: 这是HomeController: 它已编译并运行,但在Chrome开发工具网络中- 请求URL: http://: 1772/Home/关于请求方法: GET状态码: 200 OK请求Headersview源接受: text/html,应用程序/xhtml xml,应用

  • 我使用NetBeans7.3在Tomcat上部署WebApplication。当我运行/部署应用程序时,我可以在输出窗口中看到服务器日志和“Apache Tomcat日志”。 但是在我的应用程序中,我用log4j指定了另一个日志文件,仅用于我的应用程序日志。 我怎样才能像直接在NetBeans中看到其他日志输出一样看到我的应用程序的日志呢? 我的log4j有一个附加日志的规范--所以我的类的所有警

  • 问题内容: 我可以在路径 上看到所有hadoop日志 但是我在哪里可以看到应用程序级别的日志?例如 : 映射器 reducer.py 我在哪里可以看到我的应用程序或相关的日志语句? 我正在使用 谢谢 问题答案: Hadoop流使用STDIN / STDOUT 在映射器和化简器之间传递键/值对,因此必须将日志消息写入特定的日志文件- 有关更多详细信息,请查看示例代码和python日志记录文档。该查询

  • 我从头开始使用react-native创建了一个简单的注册表单。我现在使用'react-native init login'来放置我需要使用console.log的验证,但我无法查看它们。我尝试了一些调试链接,但无法查看日志。我正在使用Ubuntu15.10好心的帮助。:)

  • 我有一个Spring Boot应用程序,我在pom中定义了我的thymeleaf依赖项。包含以下行的xml: 因此,当我启动应用程序并打印预定义的bean名称时,我会看到这些bean(我认为这对thymeleaf正常运行很重要): 模板引擎 thymeleafResourceResolver thymeleafViewResolver 项目结构如下所示: 我在fragments.html中定义了一

  • 好吧,我已经受够了一个星期了。我无法在WAS控制台或日志文件中查看spring日志/castor日志。我在Tomcat中也能做到这一点。我通过在线搜索尝试了大多数方法。但没有任何帮助。我使用的是IBM WAS-7.0.0.11 这是我的log4j。财产。 log4j。阿佩德。console=org。阿帕奇。log4j。控制台Pender log4j。阿佩德。安慰布局=组织。阿帕奇。log4j。图案