Eine Protokollausgabe in einem Datenformat wie JSON (siehe unten). GCP analysiert automatisch JSON-formatierte Protokolle zur Verwendung in Suchanfragen, was praktisch ist. (Bestätigt in Cloud Run) Zeilenumbrüche werden auch als JSON maskiert, wodurch es einfacher ist, mehrzeilige Protokolle als Nebeneffekt zu behandeln.
{"level": "INFO", "message": "hello\nworld", "timestamp": "2020-07-01 00:00:00"}
In Python können Sie das Protokoll im JSON-Format ausgeben, indem Sie Ihren eigenen Formatierer im Logger festlegen.
$ python -V
Python 3.8.0
logger.py
import sys
import logging
import json
import traceback
class JsonFormatter(logging.Formatter):
def format(self, log):
return json.dumps({
"level": log.levelname,
"message": log.msg,
"timestamp": self.formatTime(log, self.datefmt),
"traceback": traceback.format_exc() if log.exc_info else []
})
formatter = JsonFormatter(datefmt="%Y-%m-%d %H:%M:%S")
stream = logging.StreamHandler(stream=sys.stdout)
stream.setFormatter(formatter)
logger = logging.getLogger('your-logger-name')
logger.setLevel(logging.INFO)
logger.addHandler(stream)
Laden und verwenden Sie den Set Logger.
sample.py
from logger import logger
logger.info("hello\nworld")
logger.info({"foo": "foo", "boo": "boo"})
Das folgende Protokoll wird ausgegeben.
{"level": "INFO", "message": "hello\nworld", "timestamp": "2020-07-01 00:00:00", "traceback": []}
{"level": "INFO", "message": {"foo": "foo", "boo": "boo"}, "timestamp": "2020-07-01 00:00:00", "traceback": []}
Cloud Logging
Sie können über den Bildschirm GCP Cloud Logging-> Log Viewer suchen. Die Datenausgabe als Protokoll, wie unten gezeigt, wird in "jsonPayload" gespeichert, und der Schlüssel kann in der Abfrage angegeben werden.
resource.type="cloud_run_revision"
jsonPayload.level="INFO"
jsonPayload.message.foo="foo"
Das Protokoll wird wie unten gezeigt als Suchergebnis angezeigt
{
"insertId": "xxxxxxxxxxxxxxxxxxxxxxxx",
"jsonPayload": {
"message": {"foo": "foo", "boo": "boo"},
"traceback": [],
"timestamp": "2020-07-07 15:33:28",
"level": "INFO"
},
...
}
Recommended Posts