Exciting release!Introducing "safe npm". Learn more
Socket
Log inDemoInstall

logging-chiper

Package Overview
Dependencies
3
Maintainers
1
Versions
9
Issues
File Explorer

Advanced tools

logging-chiper

just a little module to log

    2.1.0latest
    npm

Version published
Maintainers
1
Weekly downloads
854
increased by20.45%

Weekly downloads

Readme

Source

Logging Chiper

Table of Contents

  • Logging Chiper
  • Table of Contents
  • Description
  • Motivation
  • Requirements
  • Usage

Description

This simple module offers a way to use some functionalities from the logging-chiper.

Motivation

As company we want to standardize the way we log our application, so that's we wrote this module to make it easier to log our application.

Requirements

  1. Nodejs LTS.
  2. GOOGLE_APPLICATION_CREDENTIALS defined with the file path as environment variable.

Usage

Install

npm i logging-chiper -S -E

OR

yarn add logging-chiper -S -E

Initialization

To initialize the logger you need call the init function at start point of your application, using the following parameters:

// import the class from the library import { Logger } from 'logging-chiper'; Logger.init({ projectId: 'your-project-id', service: 'your-service-name', version: '0.0.1', });

Parameters

As we want to standardize the way we log our application, so we defined a base structure as input parameters to accomplish this:

// Log method Logger.getInstance().log({ stt: 'my-stt', // name of the stt owner context: 'my-context', // name of the class or file (optional) functionName: 'my-function', // name of the function (optional) message: 'my-message', // message to log data: { // data to log (optional) storeId: '' + 123456, responseCode: '' + 200, testField: 'test', extraField: 'extra', }, }); // Warn method Logger.getInstance().warn({ stt: 'my-stt', // name of the stt owner context: 'my-context', // name of the class or file (optional) functionName: 'my-function', // name of the function (optional) message: 'my-message', // message to log data: { // data to log (optional) storeId: '' + 123456, responseCode: '' + 200, testField: 'test', extraField: 'extra', }, }); // Error method Logger.getInstance().error({ stt: 'my-stt', // name of the stt owner context: 'my-context', // name of the class or file (optional) functionName: 'my-function', // name of the function (optional) message: 'my-message', // message to log error, // the exception to log that just occurred data: { // data to log (optional) storeId: '' + 123456, responseCode: '' + 200, testField: 'test', extraField: 'extra', }, });

As you can see, all the methods follows almost the same structure, but when you want to log an error, you need to pass the error as parameter.

Examples

Simple Log

import { Logger } from 'logging-chiper'; const bootstrap = () => { Logger.init({ projectId: 'your-project-id', service: 'your-service-name', version: '0.0.1', }); Logger.getInstance().log({ stt: 'solutions', context: 'main.ts', functionName: 'bootstrap', message: 'this is a log message...', }); }; } bootstrap();

Log Requests

With Express
import { createMiddleware } from 'logging-chiper'; import express, { Request, Response } from 'express'; import { AddressInfo } from 'net'; import { LoggingWinston } from '@google-cloud/logging-winston'; import { transports } from 'winston'; const app = express(); createMiddleware([ // creates the middleware new transports.Console(), // logs to console new LoggingWinston({ // logs to gpc projectId: "chiper-development", logName: "myapp" }) ]).then((mw) => { app.use(mw); // setup middler into express app.get('/info', (req: Request, res: Response) => { (req as any).log.info("get Hello World!"); // Using log from request res.status(200).send('Hello World!'); }); const server = app.listen(3000, () => { const address = (server.address() as AddressInfo) mw.logger.info(`running at http://${address.address}:${address.port}`); // use the logger from mw. }); });

With NestJS

  • You need the create an interceptor for logging:

app.logmiddleware.ts

import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; import { createMiddleware } from 'logging-chiper'; import { LoggingWinston } from '@google-cloud/logging-winston'; import { transports } from 'winston'; @Injectable() export class LoggerMiddleware implements NestMiddleware { async use(req: Request, res: Response, next: NextFunction) { const mw = await createMiddleware([ // creates the middleware new transports.Console(), // logs to console new LoggingWinston({ // logs to gpc projectId: "chiper-development", logName: "myapp" }) ]) mw(req, res, next); } }
  • And then configure in the module:

app.module.ts

import { MiddlewareConsumer, Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { LoggerMiddleware } from "./app.loggermiddleware"; @Module({ imports: [], controllers: [AppController], providers: [AppService], }) export class AppModule { configure(consumer: MiddlewareConsumer) { consumer .apply(LoggerMiddleware) .forRoutes('*'); } }

FAQs

Last updated on 22 Jun 2022

Did you know?

Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install Socket
Socket
support@socket.devSocket SOC 2 Logo

Product

  • Package Issues
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc