Logging
- how-to
Node.js SDK logging.
| the Logging implementation has changed substantially in 4.x. Customized logging is not yet implemented, this will be resolved in a future 4.x release. Use of the console logger (detailed below) is currently recommended. |
Library logging
The Node.js SDK allows logging via the CBPPLOGLEVEL environment variable.
Note that these logs will go to stderr — on most developers' laptops, stderr will be redirected to stdout (standard output), and displayed in the terminal running the app.
Redirection to a log file may depend upon which shell you use.
For the BASH shell, for example, see the Bash Scripting Guide.
Environmental Settings
In the command line environment, the CBPPLOGLEVEL variable is set as follows:
export CBPPLOGLEVEL=<log-level>
set CBPPLOGLEVEL=<log-level>
Version 4.4.3 of the SDK introduces the CBPPLOGFILE variable that can be used in conjunction with CBPPLOGLEVEL.
Set CBPPLOGFILE to a filename in order to have the log output to a file (instead of stderr).
In the command line environment, the CBPPLOGFILE variable is set as follows:
export CBPPLOGFILE=<filename>
set CBPPLOGFILE=<filename>
Log Levels
You can increase the log level for greater verbosity (more information) in the logs:
-
off — disables all logging, which is normally set by default.
-
error — error messages.
-
warn — error notifications.
-
info — useful notices, not often.
-
debug — diagnostic information, minimum level required to investigate problems.
-
trace — detailed diagnostic information, often required to investigate problems.
When logging is turned on, the SDK will output messages similar to this:
[2022-05-17 15:23:46.221] [85833,13741777] [debug] 1ms, [2aed64fd-5d38-416a-cc09-e67c371b8444]: use default CA for TLS verify
SDK Telemetry from the Server
In addition to Tracing and other metrics, and client logging, SDK telemetry is also sent to the Server — available from 8.0, and in new Capella Operational clusters — for ingestion with other Prometheus metrics. Capella Operatioal exposes these metrics through the UI.
For self-managed Server, collection can be disabled and enabled through the REST API:
curl --user Administrator:password http://172.17.0.2:8091/settings/appTelemetry -d enabled=true
And the Prometheus-format metrics fetched with:
curl --user Administrator:password http://172.17.0.2:8091/metrics
There may be advantages to collecting information this way, but note that metrics are collected per node, and a central Prometheus instance should be set to collect all metrics so that information is not lost in case of a sudden failover.
Also note that if the cluster is behind a load balancer, the collected metrics may not accurately record the actual correct node with which the SDK interacts.