Ведение журнала Google Stakdrive: write_log_entries, что находится внутри массива? - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь выяснить структуру данных для использования в следующем примере из документации Google: https://github.com/googleapis/google-cloud-python/tree/master/logging#using-the-api и https://googleapis.github.io/google-cloud-python/latest/logging/index.html?highlight=write_log_entries

from google.cloud import logging_v2

client = logging_v2.LoggingServiceV2Client()
entries = []
response = client.write_log_entries(entries)

Как мне отформатировать содержимое entries массив?И как включить определенный элемент метки времени вместо метки времени сбора по умолчанию?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Это могут быть либо LogEntry объекты, либо dict (с теми же полями, что и в LogEntry).Последнее немного проще.Типичное использование:

from google.cloud import logging_v2

client = logging_v2.LoggingServiceV2Client()
# This defines what object is emitting the logs. See https://cloud.google.com/logging/docs/api/v2/resource-list for a list of options
res = {"type": "gce_instance",
       "labels": {
          "zone": "us-central1-a",
          "instance_id": "1235"}}
entries = []

# Add a plain text log entry
logEntry = {"text_payload": "abc YOUR MESSAGE BLAH"}
entries.append(logEntry)

# Add a structured log entry (https://cloud.google.com/logging/docs/structured-logging)
from google.protobuf.struct_pb2 import Struct
s = Struct()
s["key"] = ["value1","value2"]
logEntry = {"json_payload": s}
entries.append(logEntry)

# write a batch of logs to Stackdriver.
response = client.write_log_entries(entries,
                                    log_name='projects/[PROJECT_ID]/logs/[LOG_ID]',
                                    resource=res)

Я не могу найти отформатированные документы для write_log_entry, но вы можете увидеть детали в code comments.

0 голосов
/ 27 февраля 2019

Пример записи.Вы можете расширить это с помощью своих пользовательских изменений, таких как отметка времени.

{
    "logName": "projects/development/logs/my-test-log",
    "resource": {"type": "global"},
    "severity": "WARNING", 
    "textPayload": "Test entry"
}

Эти ссылки документируют поля для LogEntry, который является объектом (словарь Python).

Обратите внимание, что некоторые изсами поля являются объектами:

LogEntry

LogEntry

{
  "logName": string,
  "resource": {
    object(MonitoredResource)
  },
  "timestamp": string,
  "receiveTimestamp": string,
  "severity": enum(LogSeverity),
  "insertId": string,
  "httpRequest": {
    object(HttpRequest)
  },
  "labels": {
    string: string,
    ...
  },
  "metadata": {
    object(MonitoredResourceMetadata)
  },
  "operation": {
    object(LogEntryOperation)
  },
  "trace": string,
  "spanId": string,
  "traceSampled": boolean,
  "sourceLocation": {
    object(LogEntrySourceLocation)
  },

  // Union field payload can be only one of the following:
  "protoPayload": {
    "@type": string,
    field1: ...,
    ...
  },
  "textPayload": string,
  "jsonPayload": {
    object
  }
  // End of list of possible types for union field payload.
}

Эта ссылка документирует метку времени:

Отметка времени

Формат строки отметки времени выглядит следующим образом (григорианский календарь):

Range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...