I have a lib, that uses winston for logging, which I want to use inside my cloud function and integrate its logging with Cloud Logging. So inside the lib I check whether it's running in Cloud and if so I create a winston logger with LoggingWinston transport:
export function createLogger() {
if (process.env.K_SERVICE) {
// we're in Google Cloud (Run/Functions)
return createCloudLogger();
} else {
return createConsoleLogger();
}
}
Please note I specify redirectToStdout: false.
It worked fine in general but recently I've noticed that in logs there're a lot of entries like this:
DEFAULT 2023-04-17T11:03:56.398817Z Exception from a finished function: Error: Total timeout of API google.logging.v2.LoggingServiceV2 exceeded 60000 milliseconds before any response was received.
and sometime they are even turned into error:
Error: Total timeout of API google.logging.v2.LoggingServiceV2 exceeded 60000 milliseconds before any response was received.
at repeat (/workspace/node_modules/google-gax/build/src/normalCalls/retries.js:66:31)
at Timeout._onTimeout (/workspace/node_modules/google-gax/build/src/normalCalls/retries.js:101:25)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7)
there are very similar but redirectToStdout: true resource.labels.function_name goes to jsonPayload instead of to the root object as with redirectToStdout: false. Which results in missing label (chip) with function name on the log entry.
I have a lib, that uses winston for logging, which I want to use inside my cloud function and integrate its logging with Cloud Logging. So inside the lib I check whether it's running in Cloud and if so I create a winston logger with LoggingWinston transport:
where createCloudLogger is:
Please note I specify
redirectToStdout: false
. It worked fine in general but recently I've noticed that in logs there're a lot of entries like this: DEFAULT 2023-04-17T11:03:56.398817Z Exception from a finished function: Error: Total timeout of API google.logging.v2.LoggingServiceV2 exceeded 60000 milliseconds before any response was received.and sometime they are even turned into error:
in the related bug https://github.com/googleapis/nodejs-logging/issues/1185 it's suggested to turn on stdout writing. So I changed
redirectToStdout
to true. Unfortunately the result isn't the same.Here's a log entry with![image](https://user-images.githubusercontent.com/1203230/232493830-d50ca592-21ed-4254-b031-e75678b2e26c.png)
redirectToStdout: false
:Here's a log entry with![image](https://user-images.githubusercontent.com/1203230/232493632-8817fc0a-ca97-4b3c-8252-30a59fd9bbe0.png)
redirectToStdout: true
:there are very similar but
redirectToStdout: true
resource.labels.function_name goes to jsonPayload instead of to the root object as withredirectToStdout: false
. Which results in missing label (chip) with function name on the log entry.