Being aware of what happens inside an application is important for debugging. Therefore, application logs are used by developers to keep track of errors, warnings, and informative events.
To this end, VTEX IO offers a logging service to facilitate the process of developing and debugging an application on the platform.
VTEX IO logging service collects information from the cloud infrastructure, where VTEX applications run, and provides the applications' logs through Toolbelt - our CLI.
The following step-by-step shows how to implement VTEX IO logging service in your applications and how to retrieve the logs these apps produce.
Step by step
Implementing VTEX IO Logging Service
The VTEX IO Logging Service was designed for node applications and is not yet available for other applications on the platform.
Assuming that you are familiar with how a service node function is implemented on the VTEX IO platform, consider the example below:
const helloWorld = (Context: ctx) => {
const { vtex: { logger } } = ctx
logger.info('Hello World!')
}
In this example, our helloWorld
function receives as a parameter an object with a Context interface, which contains many implementations inherent to the platform.
One of those implementations is called vtex
- an object containing all VTEX IO infrastructure related metadata, such as account
, workspace
, tenant
, settings
, and some service implementations. In this case, we used the logger
service, which is an implementation inside vtex
responsible for generating log messages.
After declaring the function, the logger
object is destructured from the vtex
context and, in the sequence, logger.info
is called to save the informational Hello World!
message in the log.
The Logging Service also supports the warn
, error
, and debug
methods, having different levels that can be used to filter your application logs. For example:
const helloWorld = (Context: ctx) => {
const { vtex: { logger } } = ctx
logger.warn('Warning the world!')
logger.error('Error!!!')
logger.debug('Verbose debug message!')
}
Every exception that happens inside a VTEX IO service application is intercepted and automatically logged with a
logger.error
implementation.
Retrieving application logs
Every log written by a running application with our logger implementation is collected and stored for 7 days. Those logs can be retrieved by the VTEX Toolbelt CLI.
Using VTEX IO's CLI:
- Log in to your VTEX account;
- Run the command
vtex logs --all
to retrieve logs from every application installed in your account.
We suggest running
vtex logs --all > {mylogfile.logs}
to save the log messages in a local file. Remember to replace{mylogfile.logs}
with the most suitable name for you.
vtex logs --all
18:15:26.779 - info: Connecting to logs stream for store components
18:15:26.782 - info: Press CTRL+C to abort
18:15:43.856 - info: Listening to store components logs
info: { status: 403,
code: 'FORBIDDEN',
name: 'ForbiddenError',
level: 'error',
message: 'This username is already registered with another email',
stack:
'ForbiddenError: This username is already registered with another email[ErrorStack...]
routeId: 'login' }
To retrieve logs from a specific application, use the command vtex logs {account}.{serviceAppExample}
, replacing account
with your account name and serviceAppExample
with the specific application name.
If you want to see log messages that you have previously retrieved, run
vtex logs --past
. You can runvtex logs --help
to check out other log commands.
Updated 4 months ago