Skip to content

Google Cloud Logging Transport

NPM Version

Transport Source

Implements the Google Cloud Logging library.

This transport sends logs to Google Cloud Logging (formerly known as Stackdriver Logging).

Installation

bash
npm install @loglayer/transport-google-cloud-logging @google-cloud/logging serialize-error
bash
yarn add @loglayer/transport-google-cloud-logging @google-cloud/logging serialize-error
bash
pnpm add @loglayer/transport-google-cloud-logging @google-cloud/logging serialize-error

Usage

INFO

This transport uses log.entry(metadata, data) as described in the library documentation.

  • The metadata portion is not the data from withMetadata() or withContext(). See the rootLevelData option for this transport on how to modify this value.
  • The data portion is actually the jsonPayload is what the transport uses for all LogLayer data.
  • The message data is stored in jsonPayload.message

For more information, see Structured Logging, specifically LogEntry.

typescript
import { LogLayer } from "loglayer";
import { GoogleCloudLoggingTransport } from "@loglayer/transport-google-cloud-logging";
import { Logging } from '@google-cloud/logging';
import { serializeError } from "serialize-error";

// Create the logging client
const logging = new Logging({ projectId: "GOOGLE_CLOUD_PLATFORM_PROJECT_ID" });
const log = logging.log('my-log');

// Create LogLayer instance with the transport
const logger = new LogLayer({
  errorSerializer: serializeError,
  transport: new GoogleCloudLoggingTransport({
    logger: log,
  })
});

// The logs will include the default metadata
logger.info("Hello from Cloud Run!");

Configuration

rootLevelData

The root level data to include for all log entries. This is not the same as using withContext(), which would be included as part of the jsonPayload.

The rootLevelData option accepts any valid Google Cloud LogEntry fields except for severity, timestamp, and jsonPayload which are managed by the transport.

typescript
const logger = new LogLayer({
  transport: new GoogleCloudLoggingTransport({
    logger: log,
    rootLevelData: {
      resource: {
        type: "cloud_run_revision",
        labels: {
          project_id: "my-project",
          service_name: "my-service",
          revision_name: "my-revision",
        },
      },
      labels: {
        environment: "production",
        version: "1.0.0",
      },
    },
  }),
});

Log Level Mapping

LogLayer log levels are mapped to Google Cloud Logging severity levels as follows:

LogLayer LevelGoogle Cloud Logging Severity
fatalCRITICAL
errorERROR
warnWARNING
infoINFO
debugDEBUG
traceDEBUG