0.3.3 • Published 4 months ago

@soinlabs/hawk v0.3.3

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Hawk

codecov npm version npm downloads

Error and logs framework for Soin Labs projects.

How to use

For getting a simple use of Hawk, follow the steps bellow:

  1. Export the Hawk constructor and make an instance:

    // your index.js to handle hawk singleton configuration
    
    const { Hawk } = require("@soinlabs/hawk");
    
    const customizedHawk = new Hawk({
      logsPath: "yourWorkspace/route/example/logsDirectory",
      slackToken: "yourWebhookChannelURL",
      appName: "yourApplicationName",
      optionalSign: "optionalBenchmark",
    });
  2. Use your Hawk instance to perform your logs

    customizedHawk.log("My first log");
    
    const newError = customizedHawk.CreateElasticError("message", 300);
    customizedHawk.log(newError);
    
    // It is possible to perform a simple log with logging level
    const { Logger } = require("@soinlabs/hawk");
    customizedHawk.log("My first log", Logger.SILLY);
  3. Some error and logs handling utilities

    // Some error and logs handling utilities:
    
    const { Logger, LoggedError } = require('@soinlabs/hawk')
    
    const LoggingLevels = {
        error: Logger.ERROR,
        warn: Logger.WARN,
        info: Logger.INFO,
        http: Logger.HTTP,
        verbose: Logger.VERBOSE,
        debug: Logger.DEBUG,
        silly: Logger.SILLY,
    };
    
    const ErrorLevels = {
        low: LoggedError.LOW_LEVEL,
        medium: LoggedError.MEDIUM_LEVEL,
        high: LoggedError.HIGH_LEVEL,
    };
    
    /**
    * It creates an Elastic Error with message and code, after, it makes log with this error
    * and throw the created error as an exception
    * @param {String} message what happened?
    * @param {Number} status status code
    * @param {Number} errorLevel optional
    */
    function sendError(message, status, errorLevel = ErrorLevels.low) {
        const error = customizedHawk.CreateElasticError(message, status);
        error.setErrorLevel(errorLevel);
        customizedHawk.log(error, LoggingLevels.error);
        throw error;
    }
    
    /**
    * It performs a log with this message at warning level
    * @param {String} msg
    */
    function sendWarning(msg) {
        customizedHawk.log(
            { message: msg, referenceCode: customizedHawk.getReferenceCode() },
            LoggingLevels.warn
        )
    }
    
    /**
     * It creates an Elastic Error with message and code, after, it makes log with this error
    * @param {String} message
    * @param {Number} code
    * @param {Number} errorLevel optional
    */
    function logError(message, code, errorLevel = ErrorLevels.low) {
        const error = customizedHawk.CreateElasticError(message, code)
        customizedHawk.log(error, LoggingLevels.error)
    }
    
    ...
    // Use your utilies
    
    // This throw an exception
    sendError("No id provided", 400);
    
    // It performs a warning level log
    sendWarning('Bad request')

Another alternatives

You could do some things like these:

  1. Throw LoggedError

    // Use builder pattern
    
    throw new LoggedError()
      .setMessage(`Error captured by hawk: ${message}`)
      .setReferenceCode("myFile.js")
      .setErrorLevel(LoggedError.HIGH_LEVEL)
      .setToLog(true)
      .setToSlack(true);
    
    // Another way
    
    throw new LoggedError({
      message: `Error captured by hawk: ${message}`,
      status: 401,
      toLog: true,
      toElastic: false,
      toSlack: true,
      newField: "yourNewFieldValue",
    });