@kevsjh/cloud-trace-logger 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -43,7 +43,15 @@ try {
43
43
  }
44
44
  ```
45
45
 
46
- In production, errors are annotated with the Cloud Error Reporting `@type` so they appear in the Error Reporting console.
46
+ In production, errors are annotated with the Cloud Error Reporting `@type`, `stack_trace`, and `serviceContext` fields so they appear in the Error Reporting console.
47
+
48
+ On Cloud Run, `serviceContext` is auto-detected from the `K_SERVICE` and `K_REVISION` environment variables. On other platforms, pass it explicitly:
49
+
50
+ ```ts
51
+ const log = createCloudTraceLogger({
52
+ serviceContext: { service: "my-api", version: "1.0.0" },
53
+ });
54
+ ```
47
55
 
48
56
  ### With structured data
49
57
 
@@ -67,6 +75,10 @@ const log = createCloudTraceLogger({
67
75
  // Add Cloud Error Reporting @type on error-class severities.
68
76
  // Defaults to true when NODE_ENV=production.
69
77
  errorReporting: true,
78
+
79
+ // Service context for Error Reporting.
80
+ // Auto-detected from K_SERVICE/K_REVISION on Cloud Run.
81
+ serviceContext: { service: "my-api", version: "1.0.0" },
70
82
  });
71
83
  ```
72
84
 
@@ -94,7 +106,12 @@ Each call writes a single JSON line to stdout via `console.log`, which Cloud Log
94
106
  "errorStack": "Error: connection refused\n at ...",
95
107
  "errorName": "Error"
96
108
  },
97
- "@type": "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent"
109
+ "@type": "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent",
110
+ "stack_trace": "Error: connection refused\n at ...",
111
+ "serviceContext": {
112
+ "service": "my-api",
113
+ "version": "my-api-00001-abc"
114
+ }
98
115
  }
99
116
  ```
100
117
 
package/dist/index.d.ts CHANGED
@@ -2,6 +2,10 @@ export type Severity = "DEBUG" | "INFO" | "WARNING" | "WARN" | "ERROR" | "CRITIC
2
2
  export type LoggableRequest = {
3
3
  headers: Record<string, string | string[] | undefined>;
4
4
  };
5
+ export type ServiceContext = {
6
+ service: string;
7
+ version?: string;
8
+ };
5
9
  export type LoggerOptions = {
6
10
  /** Google Cloud project ID. Falls back to PROJECT_ID then GOOGLE_CLOUD_PROJECT env vars. */
7
11
  projectId?: string;
@@ -9,6 +13,8 @@ export type LoggerOptions = {
9
13
  suppressDebug?: boolean;
10
14
  /** Add Cloud Error Reporting @type on error-class severities. Defaults to true when NODE_ENV === "production". */
11
15
  errorReporting?: boolean;
16
+ /** Service context for Cloud Error Reporting. Auto-detected from K_SERVICE/K_REVISION env vars on Cloud Run if not provided. */
17
+ serviceContext?: ServiceContext;
12
18
  };
13
19
  export type LogOptions = {
14
20
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kHAAkH;IAClH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,aAAkB,IAY5C,0CAMjB,UAAU,KAAG,IAAI,CAwErB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kHAAkH;IAClH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gIAAgI;IAChI,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,aAAkB,IAqB5C,0CAMjB,UAAU,KAAG,IAAI,CAgFrB"}
package/dist/index.js CHANGED
@@ -8,6 +8,13 @@ function createCloudTraceLogger(options = {}) {
8
8
  process.env.GOOGLE_CLOUD_PROJECT;
9
9
  const suppressDebug = options.suppressDebug ?? process.env.NODE_ENV === "production";
10
10
  const errorReporting = options.errorReporting ?? process.env.NODE_ENV === "production";
11
+ const serviceContext = options.serviceContext ??
12
+ (process.env.K_SERVICE
13
+ ? {
14
+ service: process.env.K_SERVICE,
15
+ ...(process.env.K_REVISION && { version: process.env.K_REVISION }),
16
+ }
17
+ : undefined);
11
18
  return function log({ message, req, severity = "INFO", data, error, }) {
12
19
  try {
13
20
  const normalizedSeverity = severity === "WARN" ? "WARNING" : severity;
@@ -45,15 +52,20 @@ function createCloudTraceLogger(options = {}) {
45
52
  errorName: error.name,
46
53
  }
47
54
  : { errorValue: String(error) };
55
+ const isErrorReport = errorReporting && ERROR_SEVERITIES.includes(normalizedSeverity);
56
+ const stackTrace = isErrorReport && error instanceof Error && error.stack
57
+ ? error.stack
58
+ : undefined;
48
59
  const entry = {
49
60
  ...(trace && { "logging.googleapis.com/trace": trace }),
50
61
  ...dataFields,
51
62
  ...(errorFields && { error: errorFields }),
52
63
  severity: normalizedSeverity,
53
64
  message,
54
- ...(errorReporting &&
55
- ERROR_SEVERITIES.includes(normalizedSeverity) && {
65
+ ...(isErrorReport && {
56
66
  "@type": "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent",
67
+ ...(stackTrace && { stack_trace: stackTrace }),
68
+ ...(serviceContext && { serviceContext }),
57
69
  }),
58
70
  };
59
71
  console.log(JSON.stringify(entry));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevsjh/cloud-trace-logger",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Structured JSON logger with Google Cloud Trace correlation and Cloud Error Reporting support",
5
5
  "author": "kevsjh",
6
6
  "license": "MIT",