Escribir, ver y responder registros

Escribe registros

Para emitir una línea de registros desde tu función de Cloud Functions, escribe al resultado estándar o al error estándar.

Node.js

Usa console.log() y console.error():
exports.helloWorld = (req, res) => {
  console.log('I am a log entry!');
  console.error('I am an error!');
  res.end();
};

Python (Beta)

Por ejemplo, usa print() o el módulo logging:
import logging

def hello_world(data, context):
    """Background Cloud Function.
    Args:
         data (dict): The dictionary with data specific to the given event.
         context (google.cloud.functions.Context): The event metadata.
    """
    print('Hello, stdout!')
    logging.warn('Hello, logging handler!')

Go (Beta)

// Package helloworld provides a set of Cloud Function samples.
package helloworld

import (
	"log"
	"net/http"
	"os"
)

// Loggers for printing to Stdout and Stderr.
var (
	stdLogger = log.New(os.Stdout, "", 0)
	logger    = log.New(os.Stderr, "", 0)
)

// HelloLogging logs messages.
func HelloLogging(w http.ResponseWriter, r *http.Request) {
	stdLogger.Println("I am a log entry!")
	logger.Println("I am an error!")
}
  • Los registros para resultado estándar tienen el nivel de registro INFO.
  • Los registros para error estándar tienen el nivel de registro ERROR.
  • Los mensajes internos del sistema tienen el nivel de registro DEBUG.

Visualiza los registros

Usa la herramienta de línea de comandos

Los registros de Cloud Functions se pueden ver en la IU de Stackdriver Logging o a través de la herramienta de línea de comandos de gcloud.

Para ver los registros con la herramienta de gcloud, usa el comando logs read:

gcloud functions logs read

Para ver los registros de una función específica, proporciona el nombre de la función como argumento:

gcloud functions logs read FUNCTION_NAME

Incluso, puedes ver los registros de una ejecución específica como sigue:

gcloud functions logs read FUNCTION_NAME --execution-id EXECUTION_ID

Para conocer el rango completo de las opciones de visualización del registro, consulta la ayuda de logs read:

gcloud functions logs read -h

Usa el panel de Logging

También puedes ver los registros de Cloud Functions desde GCP Console.

Usa la API de Logging

Los registros también se pueden escribir y recuperar a través de la API de Logging. Las bibliotecas cliente de Stackdriver Logging proporcionan una interfaz idiomática para la API de Logging:

Node.js

Para obtener más información, consulta la referencia de la biblioteca cliente de Node.js.
// By default, the client will authenticate using the service account file
// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
// the project specified by the GCLOUD_PROJECT environment variable. See
// https://googlecloudplatform.github.io/gcloud-node/#/docs/google-cloud/latest/guides/authentication
const Logging = require('@google-cloud/logging');

function getLogEntries() {
  // Instantiates a client
  const logging = Logging();

  const options = {
    pageSize: 10,
    filter: 'resource.type="cloud_function"',
  };

  // Retrieve the latest Cloud Function log entries
  // See https://googlecloudplatform.github.io/gcloud-node/#/docs/logging
  return logging.getEntries(options).then(([entries]) => {
    console.log('Entries:');
    entries.forEach(entry => console.log(entry));
    return entries;
  });
}

Python (Beta)

Para obtener más información, consulta la referencia de la biblioteca cliente de Python.
import os
import google.cloud.logging as cloud_logging
cloud_client = cloud_logging.Client()
log_name = 'cloudfunctions.googleapis.com%2Fcloud-functions'
cloud_logger = cloud_client.logger(log_name.format(os.getenv('GCP_PROJECT')))

def get_log_entries(request):
    """
    HTTP Cloud Function that displays log entries from Cloud Functions.
    Args:
        request (flask.Request): The request object.
    Returns:
        The response text, or any set of values that can be turned into a
        Response object using `make_response`
        <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>.
    """
    """"""

    all_entries = cloud_logger.list_entries(page_size=10)
    entries = next(all_entries.pages)

    for entry in entries:
        timestamp = entry.timestamp.isoformat()
        print('* {}: {}'.format
              (timestamp, entry.payload))

    return 'Done!'

Go (Beta)

Para obtener más información, consulta la referencia de la biblioteca cliente de Go.
// Package log contains logging examples.
package log

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/logging/apiv2"
	"google.golang.org/api/iterator"
	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
)

// logEntries retrieves log entries from projectID and writes them to the
// passed io.Writer.
func logEntries(w io.Writer, projectID string) error {
	ctx := context.Background()
	client, err := logging.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("logging.NewClient: %v", err)
	}

	req := &loggingpb.ListLogEntriesRequest{
		ResourceNames: []string{"projects/" + projectID},
		PageSize:      10,
	}

	fmt.Fprintln(w, "Entries:")
	it := client.ListLogEntries(ctx, req)
	// Wrap in a for loop to get all available log entries.
	resp, err := it.Next()
	if err == iterator.Done {
		return nil
	}
	if err != nil {
		return fmt.Errorf("it.Next: %v", err)
	}
	fmt.Fprintln(w, resp.GetPayload())
	return nil
}

Responde a los registros

Puedes responder a los eventos que registra Stackdriver mediante el reenvío de sus registros a una función de Cloud Functions. Para obtener más información, consulta la página Activadores secundarios con Stackdriver.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions