@google-cloud/logging
Version:
Cloud Logging Client Library for Node.js
176 lines (175 loc) • 6.02 kB
TypeScript
/*!
* Copyright 2015 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { protos } from '@google-cloud/logging-api';
import google = protos.google;
import { CloudLoggingHttpRequest, RawHttpRequest } from './utils/http-request';
export declare const INSERT_ID_KEY = "logging.googleapis.com/insertId";
export declare const LABELS_KEY = "logging.googleapis.com/labels";
export declare const OPERATION_KEY = "logging.googleapis.com/operation";
export declare const SOURCE_LOCATION_KEY = "logging.googleapis.com/sourceLocation";
export declare const SPAN_ID_KEY = "logging.googleapis.com/spanId";
export declare const TRACE_KEY = "logging.googleapis.com/trace";
export declare const TRACE_SAMPLED_KEY = "logging.googleapis.com/trace_sampled";
export type Timestamp = google.protobuf.ITimestamp | Date | string;
export type LogSeverity = google.logging.type.LogSeverity | string;
export type HttpRequest = google.logging.type.IHttpRequest | CloudLoggingHttpRequest | RawHttpRequest;
export type LogEntry = Omit<google.logging.v2.ILogEntry, 'timestamp' | 'severity' | 'httpRequest'> & {
timestamp?: Timestamp | null;
severity?: LogSeverity | null;
httpRequest?: HttpRequest | null;
};
export type Data = any;
export interface EntryJson {
timestamp: Timestamp;
insertId: number;
jsonPayload?: google.protobuf.IStruct;
textPayload?: string;
httpRequest?: google.logging.type.IHttpRequest;
trace?: string;
spanId?: string;
traceSampled?: boolean;
}
export interface StructuredJson {
message?: string | object;
httpRequest?: object;
timestamp?: Timestamp;
[INSERT_ID_KEY]?: string;
[OPERATION_KEY]?: object;
[SOURCE_LOCATION_KEY]?: object;
[LABELS_KEY]?: object;
[SPAN_ID_KEY]?: string;
[TRACE_KEY]?: string;
[TRACE_SAMPLED_KEY]?: boolean;
logName?: string;
resource?: object;
[key: string]: unknown;
}
export interface ToJsonOptions {
removeCircular?: boolean;
}
/**
* Create an entry object to define new data to insert into a meta.
*
* Note, {@link https://cloud.google.com/logging/quotas|Cloud Logging Quotas and limits}
* dictates that the maximum log entry size, including all
* {@link https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry|LogEntry Resource properties},
* cannot exceed approximately 256 KB.
*
* See {@link https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry|LogEntry JSON representation}
*
* @class
*
* @param {?object} [metadata] See a
* [LogEntry
* Resource](https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry).
* @param {object|string} data The data to use as the value for this log
* entry.
*
* If providing an object, these value types are supported:
* - `String`
* - `Number`
* - `Boolean`
* - `Buffer`
* - `Object`
* - `Array`
*
* Any other types are stringified with `String(value)`.
*
* @example
* ```
* const {Logging} = require('@google-cloud/logging');
* const logging = new Logging();
* const syslog = logging.log('syslog');
*
* const metadata = {
* resource: {
* type: 'gce_instance',
* labels: {
* zone: 'global',
* instance_id: '3'
* }
* }
* };
*
* const entry = syslog.entry(metadata, {
* delegate: 'my_username'
* });
*
* syslog.alert(entry, (err, apiResponse) => {
* if (!err) {
* // Log entry inserted successfully.
* }
* });
*
* //-
* // You will also receive `Entry` objects when using
* // Logging#getEntries() and Log#getEntries().
* //-
* logging.getEntries((err, entries) => {
* if (!err) {
* // entries[0].data = The data value from the log entry.
* }
* });
* ```
*/
declare class Entry {
metadata: LogEntry;
data: Data;
constructor(metadata?: LogEntry, data?: Data);
/**
* Serialize an entry to the format the API expects. Read more:
* https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
*
* @param {object} [options] Configuration object.
* @param {boolean} [options.removeCircular] Replace circular references in an
* object with a string value, `[Circular]`.
* @param {string} [projectId] GCP Project ID.
*/
toJSON(options?: ToJsonOptions, projectId?: string): EntryJson;
/**
* Serialize an entry to a standard format for any transports, e.g. agents.
* Read more: https://cloud.google.com/logging/docs/structured-logging
*/
toStructuredJSON(projectId?: string, useMessageField?: boolean): StructuredJson;
/**
* extractTraceContext extracts trace and span information from OpenTelemetry
* span context or raw HTTP request headers.
* @private
*/
private extractTraceContext;
/**
* Create an Entry object from an API response, such as `entries:list`.
*
* @private
*
* @param {object} entry An API representation of an entry. See a
* {@link https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry| LogEntry}.
* @returns {Entry}
*/
static fromApiResponse_(entry: google.logging.v2.LogEntry): Entry;
/**
* Determines whether `value` is a JavaScript object.
* @param value The value to be checked
* @returns true if `value` is a JavaScript object, false otherwise
*/
private isObject;
}
/**
* Reference to the {@link Entry} class.
* @name module:@google-cloud/logging.Entry
* @see Entry
*/
export { Entry };