UNPKG

nodejs-gcp-log-correlation

Version:

A Node.js package for automatic log correlation in Google Cloud Platform using trace context

2 lines (1 loc) 2.49 kB
"use strict";var T=Object.create;var p=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var b=(e,o)=>{for(var r in o)p(e,r,{get:o[r],enumerable:!0})},m=(e,o,r,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of h(o))!O.call(e,n)&&n!==r&&p(e,n,{get:()=>o[n],enumerable:!(t=R(o,n))||t.enumerable});return e};var I=(e,o,r)=>(r=e!=null?T(j(e)):{},m(o||!e||!e.__esModule?p(r,"default",{value:e,enumerable:!0}):r,e)),$=e=>m(p({},"__esModule",{value:!0}),e);var E={};b(E,{logger:()=>w,loggerMiddleware:()=>v,wrapCloudFunction:()=>W});module.exports=$(E);var a=I(require("winston"),1),C=require("@google-cloud/logging-winston");var x=require("async_hooks"),L=new x.AsyncLocalStorage,u=(e,o)=>L.run(e,o),y=()=>L.getStore()||{};var c=console,g=!1,q=()=>({info:(e,o)=>(g||l(),c.info(e,o)),warn:(e,o)=>(g||l(),c.warn(e,o)),error:(e,o)=>(g||l(),c.error(e,o)),debug:(e,o)=>(g||l(),c.debug(e,o))}),w=q();function N(e){return e.environment==="development"?{level:e.logLevel,transports:[new a.default.transports.Console],format:a.default.format.combine(a.default.format.timestamp(),a.default.format.printf(({level:r,message:t,timestamp:n,...s})=>{let d=Object.keys(s).length>0?` ${JSON.stringify(s)}`:"";return`[${n}] ${r.toUpperCase()}: ${t}${d}`}))}:{level:e.logLevel,transports:[new C.LoggingWinston],format:a.default.format.json()}}function D(e,o){let r=["info","warn","error","debug"],t={};return r.forEach(n=>{t[n]=(s,d={})=>{let i=y(),f={...d};return i.trace&&(f={"logging.googleapis.com/trace":i.trace.startsWith("projects/")?i.trace:`projects/${o.projectId}/traces/${i.trace}`,...f}),e[n](s,f)}}),t}function l(){if(g&&c!==console)return;let e=process.env.NODE_ENV||"development",o={environment:e,projectId:process.env.GOOGLE_CLOUD_PROJECT||"",logLevel:e==="development"?"debug":"info"};e!=="development"&&!o.projectId&&console.warn("nodejs-gcp-log-correlation: No GCP Project ID detected. Trace correlation may not work properly.");try{let r=N(o),t=a.default.createLogger(r);c=D(t,o)}catch(r){console.warn("Failed to initialize Winston logger, falling back to console:",r)}g=!0}function v(){return(e,o,r)=>{let t=e.header("x-cloud-trace-context")?.split("/")[0];u(t?{trace:t}:{},()=>{r()})}}function W(e){return(...o)=>{let t=o[0].header("x-cloud-trace-context")?.split("/")[0];return u(t?{trace:t}:{},()=>e(...o))}}0&&(module.exports={logger,loggerMiddleware,wrapCloudFunction});