@ollie-dev/vtex-io-logger
v0.3.0
Published
A logger for VTEX IO apps
Downloads
111
Maintainers
Readme
@ollie-dev/vtex-io-logger
@ollie-dev/vtex-io-logger
is an npm package designed to enhance the logging and observability capabilities for VTEX IO developers and clients. It offers a streamlined and flexible way to integrate advanced logging functionalities into your VTEX IO applications.
Features
- Easy Integration: Quickly add comprehensive logging to your package with minimal setup.
- Flexible Middleware: Manually inject the logger at the route level for fine-grained control.
- Extended Context: Use
ContextWithOllie
to extend the nativeServiceContext
from VTEX IO with theollie
logger. - Custom Logger Support: Easily integrate with external logging systems like Pino and OpenSearch.
Installation
npm install @ollie-dev/vtex-io-logger
Usage
Basic Usage
Simply import and use withFullLogger to add logging to your service:
import { withFullLogger } from "@ollie-dev/vtex-io-logger";
// Your service setup
const service = new Service({
// ... your configurations
});
export default withFullLogger(service);
Typing with ContextWithOllie
Enhance TypeScript support by declaring the global context:
import { ContextWithOllie } from "@ollie-dev/vtex-io-logger";
declare global {
type Context = ContextWithOllie<Clients, State>;
}
Then Typescript won't complain if you try to access the logger from the context:
export async function myCoolMiddleware(ctx: Context, next: () => Promise<any>) {
const {
ollie: { logger },
} = ctx;
logger.info({
message: "Better than console.log() 🎉",
});
await next();
}
Custom Logger Integration
To use a custom logger, simply pass it as an argument:
import pino from "pino";
const logger = pino();
export default withFullLogger(service, { logger });
Connecting with External Loggers
Integrate with external logging systems like OpenSearch:
import pino from "pino";
import pinoOpenSearch from "pino-opensearch";
const streamToOpenSearch = pinoOpenSearch({
// ... OpenSearch configurations
});
const logger = pino({ level: "error" }, streamToOpenSearch);
export default withFullLogger(service, { logger });
Don't forget to create an outbound access policy to your external URL in manifest.json
API
- withFullLogger: Automatically adds logging capability to your service.
- loggerMiddleware: Allows for manual injection of the logger at the route level.
- ContextWithOllie: Extends the native
ServiceContext
withollie
logger for better TypeScript support.
Contributing
Contributions are welcome! Please see our Contributing Guide for more details.
License
This project is licensed under the MIT License - see the LICENSE file for details.