Thanks to visit codestin.com
Credit goes to bentocache.dev

Logging

Logging

In case you encounter any issues, or if you just want more visibility and information about what Bentocache is doing in production, you can plug in a custom logger when you create an instance of Bentocache.

Your logger must comply with the following interface:

export interface Logger {
trace(msg: string | LogObject): void;
trace(obj: LogObject, msg: string): void;
debug(msg: string | LogObject): void;
debug(obj: LogObject, msg: string): void;
info(msg: string | LogObject): void;
info(obj: LogObject, msg: string): void;
warn(msg: string): void;
warn(obj: LogObject, msg: string): void;
error(msg: string): void;
error(obj: ErrorObject, msg: string): void;
fatal(msg: string): void;
fatal(obj: ErrorObject, msg: string): void;
child(childObj: LogObject): Logger;
}

A compatible logger is, for example, Pino, which is the de-facto logger to use for modern Node.js projects.

Next, when you create your Bentocache instance, you can inject your logger. Example with Pino:

import { pino } from 'pino'
const logger = pino({
level: 'trace',
transport: { target: 'pino-pretty' }
})
const bento = new BentoCache({
// ...
logger,
})

Bentocache will create a child logger with the label pkg: "bentocache", allowing you to filter easily on your end.

Sometimes other child loggers are created depending on the context. Also logs of various levels are generated throughout the execution: trace, error, info, etc...

You will discover this quite easily when trying it out.